239492026-02-02 11:57:25SzeredaiNatanaelMaximális szorzat (50 pont)cpp17Elfogadva 50/5057ms1316 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	int n, k, b; cin >> n >> k >> b;
	vector<int> v(n);
	for (int i = 0; i < n; i++) cin >> v[i];

	sort(v.begin(), v.end());
	const int c = b;

	if (b != 0 && v[b - 1] >= 0){
		cout << -1;
		return 0;
	}
	if (n == b) b = 0;
	
	if (v[b + 1] - v[b] < k) {
		int r = b + 1;
		while (k - (r - b) * (v[r] - v[r - 1]) >= 0 && r < n) {
			k -= (r - b) * (v[r] - v[r - 1]);
			++r;
		}
		--r;

		for (int i = b; i < r; ++i) 
			v[i] = v[r];
		for (int i = b; i <= r; ++i) 
			v[i] += k / (r - b + 1);

		k = k % (r - b + 1);
		for (int i = b; i < b + k; ++i)
			++v[i];
	}
	else {
		v[b] += k;
	}

	if (n == c) {
		for (int i = 0; i < n; ++i) {
			if (v[i] >= 0) {
				cout << -1; 
				return 0; 
			}
		}
	}
	else if (v[b] < 0) {
		cout << -1;
		return 0;
	}

	long long p = 1; 
	int mod = 1000000007;
	for (int i = 0; i < n; i++)
		p = (p * v[i]) % mod;
	cout << p;

	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms500 KiB
3Elfogadva0/01ms508 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/04ms572 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/24ms316 KiB
11Elfogadva2/252ms748 KiB
12Elfogadva1/154ms564 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/14ms316 KiB
15Elfogadva1/119ms564 KiB
16Elfogadva1/121ms564 KiB
17Elfogadva1/120ms824 KiB
18Elfogadva1/19ms564 KiB
19Elfogadva1/139ms564 KiB
20Elfogadva1/129ms564 KiB
21Elfogadva1/157ms800 KiB
22Elfogadva1/123ms564 KiB
23Elfogadva1/157ms564 KiB
24Elfogadva1/154ms564 KiB
25Elfogadva2/21ms316 KiB
26Elfogadva2/24ms316 KiB
27Elfogadva2/228ms568 KiB
28Elfogadva1/128ms564 KiB
29Elfogadva2/221ms760 KiB
30Elfogadva1/157ms800 KiB
31Elfogadva1/141ms568 KiB
32Elfogadva2/21ms316 KiB
33Elfogadva2/257ms1056 KiB
34Elfogadva1/157ms568 KiB
35Elfogadva2/257ms564 KiB
36Elfogadva2/257ms564 KiB
37Elfogadva2/257ms564 KiB
38Elfogadva2/257ms1316 KiB
39Elfogadva1/11ms316 KiB