253132026-02-19 09:21:31linhnkMaximális szorzat (50 pont)cpp17Hibás válasz 43/5061ms804 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int mod=1e9+7;
int main() {
	ll n, k, b, d=1; cin>>n>>k>>b;
	vector<int> nums(n);
	for(int i=0; i<n; i++){
		cin>>nums[i];
	}
	sort(nums.begin(), nums.end());
	for(int i=0; i<b; i++){
		if(nums[i]>=0){
			cout<<-1; return 0;
		}
		d=(d*nums[i]%mod);
	}
	int a=1, nagy=nums[b];
	for(int i=b; i<n-1; i++){
		if(k>=(nums[i+1]-nums[i])*a){
			k-=(nums[i+1]-nums[i])*a;
			nagy=nums[i+1];
			a++;
		}
		else{
			break;
		}
	}
	int z=0;
	if(k>0){
		nagy+=k/a;
		z=k%a;
	}
	if(nagy<0){
		cout<<-1; return 0;
	}
	for(int i=b; i<n; i++){
		if(z>0){
			d=(d*(nagy+1)%mod);
			z--;
		}
		else{
			d=(d*max(nums[i], nagy)%mod);
		}
	}
	cout<<d;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base43/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms500 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva0/01ms512 KiB
5Elfogadva0/04ms432 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms344 KiB
10Elfogadva2/24ms316 KiB
11Elfogadva2/254ms800 KiB
12Elfogadva1/157ms800 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/14ms400 KiB
15Elfogadva1/120ms564 KiB
16Elfogadva1/121ms564 KiB
17Elfogadva1/121ms564 KiB
18Elfogadva1/110ms608 KiB
19Hibás válasz0/143ms564 KiB
20Hibás válasz0/132ms564 KiB
21Hibás válasz0/161ms564 KiB
22Hibás válasz0/126ms564 KiB
23Elfogadva1/161ms564 KiB
24Elfogadva1/157ms564 KiB
25Elfogadva2/21ms500 KiB
26Elfogadva2/24ms436 KiB
27Hibás válasz0/230ms608 KiB
28Hibás válasz0/130ms400 KiB
29Elfogadva2/224ms564 KiB
30Elfogadva1/161ms804 KiB
31Elfogadva1/143ms748 KiB
32Elfogadva2/22ms316 KiB
33Elfogadva2/261ms564 KiB
34Elfogadva1/161ms564 KiB
35Elfogadva2/261ms564 KiB
36Elfogadva2/261ms804 KiB
37Elfogadva2/261ms564 KiB
38Elfogadva2/261ms796 KiB
39Elfogadva1/11ms316 KiB