189292025-11-12 17:57:45KristófMaximális szorzat (50 pont)cpp17Hibás válasz 28/5082ms1044 KiB
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

long long mod=1000000007;


int main()
{
    int n,k,b;
    cin>>n>>k>>b;
    priority_queue<int> negativ,poz;
    int x;
    for(int i=0;i<n;i++)
        {
        cin>>x;
        if(x>-1)
            {
            poz.push(x*-1);
            }
        else
            {
            negativ.push(x);
            }
        }
    if(negativ.size()<b)
        {
        cout<<-1;
        return 0;
        }
    if(negativ.size() == b && n!=b)
        {
        return 0;
        while(k--)
            {
            x=poz.top()*-1;poz.pop();
            x++;
            poz.push(x*-1);
            }
        }
    else if(negativ.size() > b)
        {
        while(negativ.size()!=b && negativ.size()>0)
            {
            k+=negativ.top();
            if(k<0)
                {
                cout<<-1;
                return 0;
                }
            poz.push(0);
            negativ.pop();
            }
        while(k-- && !poz.empty())
            {
            x=poz.top()*-1;poz.pop();
            x++;
            poz.push(x*-1);
            }
        }
    else if(n==b)
        {
        while(k-- && negativ.top()!=-1)
            {
            x=negativ.top();
            x++;
            negativ.push(x);
            negativ.pop();
            }
        if(negativ.top() == -1 && k>0)
            {
            cout<<-1;
            return 0;
            }
        }
    long long ans=1;
    while(!poz.empty())
        {
        ans *=  (-poz.top() % mod);
        ans = ans % mod;
        poz.pop();
        }
    while(!negativ.empty())
        {
        ans*=negativ.top();
        ans = ans % mod;
        negativ.pop();
        }
    cout<<ans;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base28/50
1Hibás válasz0/01ms508 KiB
2Elfogadva0/01ms316 KiB
3Hibás válasz0/01ms500 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/04ms496 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/21ms316 KiB
10Hibás válasz0/24ms500 KiB
11Hibás válasz0/246ms848 KiB
12Hibás válasz0/150ms980 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/18ms316 KiB
15Elfogadva1/117ms712 KiB
16Elfogadva1/141ms688 KiB
17Elfogadva1/118ms688 KiB
18Elfogadva1/113ms688 KiB
19Hibás válasz0/165ms936 KiB
20Hibás válasz0/128ms956 KiB
21Hibás válasz0/182ms944 KiB
22Elfogadva1/124ms940 KiB
23Hibás válasz0/154ms888 KiB
24Hibás válasz0/152ms944 KiB
25Elfogadva2/22ms316 KiB
26Elfogadva2/26ms368 KiB
27Hibás válasz0/246ms776 KiB
28Hibás válasz0/148ms668 KiB
29Elfogadva2/220ms784 KiB
30Elfogadva1/171ms944 KiB
31Elfogadva1/135ms1044 KiB
32Elfogadva2/22ms508 KiB
33Elfogadva2/274ms1032 KiB
34Hibás válasz0/154ms976 KiB
35Elfogadva2/275ms908 KiB
36Elfogadva2/271ms944 KiB
37Elfogadva2/271ms944 KiB
38Elfogadva2/271ms996 KiB
39Elfogadva1/12ms508 KiB