253112026-02-19 09:02:35linhnkMaximális szorzat (50 pont)cpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base43/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva0/02ms316 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/04ms332 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/22ms764 KiB
10Elfogadva2/26ms316 KiB
11Elfogadva2/254ms564 KiB
12Elfogadva1/159ms564 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/14ms432 KiB
15Elfogadva1/120ms616 KiB
16Elfogadva1/123ms604 KiB
17Elfogadva1/121ms748 KiB
18Elfogadva1/110ms748 KiB
19Hibás válasz0/143ms804 KiB
20Hibás válasz0/132ms564 KiB
21Hibás válasz0/163ms796 KiB
22Hibás válasz0/125ms564 KiB
23Elfogadva1/161ms564 KiB
24Elfogadva1/157ms800 KiB
25Elfogadva2/21ms316 KiB
26Elfogadva2/24ms508 KiB
27Hibás válasz0/230ms564 KiB
28Hibás válasz0/130ms564 KiB
29Elfogadva2/224ms564 KiB
30Elfogadva1/161ms564 KiB
31Elfogadva1/143ms564 KiB
32Elfogadva2/21ms316 KiB
33Elfogadva2/264ms568 KiB
34Elfogadva1/161ms808 KiB
35Elfogadva2/261ms564 KiB
36Elfogadva2/261ms564 KiB
37Elfogadva2/261ms756 KiB
38Elfogadva2/261ms804 KiB
39Elfogadva1/11ms316 KiB