143032025-01-10 12:11:46NeMMaximális szorzat (50 pont)cpp17Hibás válasz 19/5061ms1108 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k, b, ln = 0;
	cin >> n >> k >> b;
	vector <int> a (n, INT_MIN);
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	sort(a.begin(), a.end());
	a.push_back(INT_MAX);
	for (int i = 0; i < n+1; i++) {
		if (a[i] >= 0) {
			ln = i-1;
			break;
		}
	}
	

	if (ln < b-1) {
		cout << -1;
		return 0;
	}

	while (ln > b-1) {
		if (k <= 0) {
			cout << -1;
			return 0;
		}

		if (k >= a[ln]) {
			k -= a[ln];
			a[ln] = 0;
			ln--;
		} else {
			a[ln] -= k;
			k = 0;
		}
	}

	if (k > 0) {
		long long s = k;
		for (int i = ln+2; i < n+1; i++) {
			s += a[i-1];

			if (a[i] >= s/(i-(ln+1))) {
				long long d = s/(i-(ln+1)), r = s%(i-(ln+1));
				for (int j = ln+1; j < i; j++) {
					k -= (d-a[j]);
					a[j] += (d-a[j]);

					if (r > 0) {
						a[j]++;
						r--;
					}
				}

				break;
			}
		}
	}


	long long c = 1;
	for (int i = 0; i < n; i++) {
		c *= a[i];
		c = c % 1000000007;
	}
	cout << c;
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base19/50
1Elfogadva0/01ms500 KiB
2Hibás válasz0/01ms316 KiB
3Elfogadva0/01ms316 KiB
4Hibás válasz0/01ms316 KiB
5Hibás válasz0/04ms432 KiB
6Elfogadva2/21ms508 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/24ms436 KiB
11Elfogadva2/254ms1056 KiB
12Elfogadva1/157ms1060 KiB
13Hibás válasz0/11ms316 KiB
14Hibás válasz0/14ms432 KiB
15Hibás válasz0/121ms612 KiB
16Hibás válasz0/123ms608 KiB
17Hibás válasz0/121ms604 KiB
18Elfogadva1/110ms784 KiB
19Hibás válasz0/143ms1060 KiB
20Hibás válasz0/130ms1060 KiB
21Hibás válasz0/161ms1060 KiB
22Hibás válasz0/125ms1060 KiB
23Elfogadva1/159ms1056 KiB
24Elfogadva1/157ms1064 KiB
25Hibás válasz0/21ms316 KiB
26Hibás válasz0/24ms508 KiB
27Hibás válasz0/230ms604 KiB
28Hibás válasz0/130ms564 KiB
29Elfogadva2/223ms756 KiB
30Hibás válasz0/161ms1056 KiB
31Hibás válasz0/143ms1060 KiB
32Hibás válasz0/21ms316 KiB
33Hibás válasz0/261ms1056 KiB
34Elfogadva1/161ms1056 KiB
35Hibás válasz0/261ms1076 KiB
36Hibás válasz0/261ms1108 KiB
37Hibás válasz0/261ms1060 KiB
38Hibás válasz0/261ms1056 KiB
39Hibás válasz0/11ms316 KiB