253112026-02-19 09:02:35linhnkMaximális szorzat (50 pont)cpp17Wrong answer 43/5064ms808 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/01ms508 KiB
3Accepted0/02ms316 KiB
4Accepted0/01ms316 KiB
5Accepted0/04ms332 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/22ms764 KiB
10Accepted2/26ms316 KiB
11Accepted2/254ms564 KiB
12Accepted1/159ms564 KiB
13Accepted1/11ms316 KiB
14Accepted1/14ms432 KiB
15Accepted1/120ms616 KiB
16Accepted1/123ms604 KiB
17Accepted1/121ms748 KiB
18Accepted1/110ms748 KiB
19Wrong answer0/143ms804 KiB
20Wrong answer0/132ms564 KiB
21Wrong answer0/163ms796 KiB
22Wrong answer0/125ms564 KiB
23Accepted1/161ms564 KiB
24Accepted1/157ms800 KiB
25Accepted2/21ms316 KiB
26Accepted2/24ms508 KiB
27Wrong answer0/230ms564 KiB
28Wrong answer0/130ms564 KiB
29Accepted2/224ms564 KiB
30Accepted1/161ms564 KiB
31Accepted1/143ms564 KiB
32Accepted2/21ms316 KiB
33Accepted2/264ms568 KiB
34Accepted1/161ms808 KiB
35Accepted2/261ms564 KiB
36Accepted2/261ms564 KiB
37Accepted2/261ms756 KiB
38Accepted2/261ms804 KiB
39Accepted1/11ms316 KiB