253132026-02-19 09:21:31linhnkMaximális szorzat (50 pont)cpp17Wrong answer 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;
}
SubtaskSumTestVerdictTimeMemory
base43/50
1Accepted0/01ms316 KiB
2Accepted0/01ms500 KiB
3Accepted0/01ms316 KiB
4Accepted0/01ms512 KiB
5Accepted0/04ms432 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms344 KiB
10Accepted2/24ms316 KiB
11Accepted2/254ms800 KiB
12Accepted1/157ms800 KiB
13Accepted1/11ms316 KiB
14Accepted1/14ms400 KiB
15Accepted1/120ms564 KiB
16Accepted1/121ms564 KiB
17Accepted1/121ms564 KiB
18Accepted1/110ms608 KiB
19Wrong answer0/143ms564 KiB
20Wrong answer0/132ms564 KiB
21Wrong answer0/161ms564 KiB
22Wrong answer0/126ms564 KiB
23Accepted1/161ms564 KiB
24Accepted1/157ms564 KiB
25Accepted2/21ms500 KiB
26Accepted2/24ms436 KiB
27Wrong answer0/230ms608 KiB
28Wrong answer0/130ms400 KiB
29Accepted2/224ms564 KiB
30Accepted1/161ms804 KiB
31Accepted1/143ms748 KiB
32Accepted2/22ms316 KiB
33Accepted2/261ms564 KiB
34Accepted1/161ms564 KiB
35Accepted2/261ms564 KiB
36Accepted2/261ms804 KiB
37Accepted2/261ms564 KiB
38Accepted2/261ms796 KiB
39Accepted1/11ms316 KiB