171212025-05-23 18:42:40ercseferencMaximális szorzat (50 pont)cpp17Elfogadva 50/5061ms804 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,b; long long k;
    cin>>n>>k>>b; vector<int>a(n);
    for(int i=0; i<n; i++)cin>>a[i];
    sort(a.begin(),a.end()); const int c=b;
    if(b!=0 && a[b-1]>=0){cout<<-1; return 0;}
    if(n==b)b=0;
    if(a[b+1]-a[b]<k){
        int r=b+1;
        while(k-(r-b)*(a[r]-a[r-1])>=0 && r<n){
            k-=(r-b)*(a[r]-a[r-1]); r++;}
        r--;
        for(int i=b; i<r; i++)a[i]=a[r];
        for(int i=b; i<=r; i++)a[i]+=k/(r-b+1);
        k=k%(r-b+1);
        for(int i=b; i<b+k; i++)a[i]++;}
    else a[b]+=k;
    if(n==c){
        for(int i=0; i<n; i++){
            if(a[i]>=0){cout<<-1; return 0;}}}
    else if(a[b]<0){cout<<-1; return 0;}
    long long s=1; int mod=1000000007;
    for(int i=0; i<n; i++)s=(s*a[i])%mod;
    cout<<s;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/04ms316 KiB
6Elfogadva2/21ms508 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms508 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/24ms432 KiB
11Elfogadva2/254ms800 KiB
12Elfogadva1/157ms804 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/14ms316 KiB
15Elfogadva1/120ms608 KiB
16Elfogadva1/121ms564 KiB
17Elfogadva1/121ms564 KiB
18Elfogadva1/110ms608 KiB
19Elfogadva1/143ms580 KiB
20Elfogadva1/132ms804 KiB
21Elfogadva1/161ms564 KiB
22Elfogadva1/125ms564 KiB
23Elfogadva1/159ms564 KiB
24Elfogadva1/157ms800 KiB
25Elfogadva2/21ms316 KiB
26Elfogadva2/24ms316 KiB
27Elfogadva2/230ms564 KiB
28Elfogadva1/130ms544 KiB
29Elfogadva2/223ms564 KiB
30Elfogadva1/161ms804 KiB
31Elfogadva1/143ms564 KiB
32Elfogadva2/21ms316 KiB
33Elfogadva2/261ms564 KiB
34Elfogadva1/161ms804 KiB
35Elfogadva2/261ms628 KiB
36Elfogadva2/261ms564 KiB
37Elfogadva2/261ms564 KiB
38Elfogadva2/261ms564 KiB
39Elfogadva1/11ms316 KiB