148162025-02-03 11:52:55markfsibianMaximális szorzat (50 pont)cpp17Hibás válasz 4/50600ms1980 KiB
#include <iostream>
#include <climits>
#include <vector>
#include <algorithm>

using namespace std;

int n, up, neg, zeros;

vector<int> negatives, positives;

int main()
{
	cin >> n >> up >> neg;
	int mini = INT_MAX, t;
	for (int i = 0; i < n; ++i)
	{
		cin >> t;
		if (t < 0)
			negatives.push_back(t);
		else if (t == 0)
			zeros--;
		else
			positives.push_back(t);
	}
	sort(negatives.begin(), negatives.end());
	int negs = negatives.size();
	
	int check = 0;
	for (int i = (int)negatives.size() - neg - 1; i >= 0; --i)
	{
		negatives[i] = negatives[i] + up;
		up = 0;
		if (negatives[i] - 1 > 0)
		{
			up = negatives[i] - 1;
			negatives[i] = 1;
			positives.push_back(1);
		}
		if (negatives[i] < 0)
		{
			check = 1;
			break;
		}
	}
	if (check)
		cout << -1;
	else
	{
		if (zeros + up < 0)
			cout << 0;
		else
		{
			for (int i = zeros; i < 0; ++i)
				positives.push_back(1);
			up = zeros + up;
			
			if (positives.size() >= 2)
			{
				while (up)
				{
					sort(positives.begin(), positives.end());
					if (positives[1] - positives[0] == 0)
					{
						positives[0]++;
						up--;
					}
					else if (positives[1] - positives[0] < up)
					{
						up = up - positives[1] + positives[0];
						positives[0] = positives[1];
					}
					else
					{
						positives[0] = positives[0] + up;
						up = 0;
						break;
					}
				}
			}
			int s = 1;
			for (auto& e : positives)
				s = s * (e % 1000000007);
			for (auto& e : negatives)
				s = s * (e % 1000000007);
			cout << s;
		}
		
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base4/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva0/01ms316 KiB
5Hibás válasz0/04ms420 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/219ms316 KiB
10Időlimit túllépés0/2600ms576 KiB
11Időlimit túllépés0/2598ms1788 KiB
12Időlimit túllépés0/1598ms1712 KiB
13Hibás válasz0/11ms316 KiB
14Hibás válasz0/14ms316 KiB
15Elfogadva1/118ms820 KiB
16Hibás válasz0/119ms1076 KiB
17Elfogadva1/120ms1076 KiB
18Elfogadva1/18ms316 KiB
19Hibás válasz0/141ms1456 KiB
20Hibás válasz0/128ms1200 KiB
21Hibás válasz0/159ms1960 KiB
22Hibás válasz0/123ms1200 KiB
23Időlimit túllépés0/1574ms1792 KiB
24Időlimit túllépés0/1577ms1708 KiB
25Hibás válasz0/26ms508 KiB
26Hibás válasz0/24ms564 KiB
27Hibás válasz0/229ms1276 KiB
28Hibás válasz0/128ms1160 KiB
29Időlimit túllépés0/2582ms1260 KiB
30Hibás válasz0/159ms1980 KiB
31Elfogadva1/132ms1468 KiB
32Hibás válasz0/21ms328 KiB
33Hibás válasz0/259ms1972 KiB
34Hibás válasz0/164ms1976 KiB
35Hibás válasz0/259ms1976 KiB
36Hibás válasz0/259ms1860 KiB
37Hibás válasz0/259ms1964 KiB
38Hibás válasz0/259ms1976 KiB
39Hibás válasz0/11ms316 KiB