189362025-11-12 19:50:56KristófMaximális szorzat (50 pont)python3Futási hiba 0/5017ms3236 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)
        {
        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)
        {
        priority_queue<int> minn;
        while(!negativ.empty())
            {
            minn.push(negativ.top()*-1);negativ.pop();
            }
        while(k > 0 && minn.top()!=-1)
            {
            k--;
            x=minn.top()*-1;minn.pop();
            x++;
            minn.push(x*-1);
            }
        if(negativ.top() == 1 && k>0)
            {
            cout<<-1;
            return 0;
            }
        while(!minn.empty())
            {
            negativ.push(minn.top()*-1);minn.pop();
            }
        }
    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
base0/50
1Futási hiba0/016ms2860 KiB
2Futási hiba0/016ms2868 KiB
3Futási hiba0/014ms3060 KiB
4Futási hiba0/016ms2868 KiB
5Futási hiba0/016ms3036 KiB
6Futási hiba0/214ms3032 KiB
7Futási hiba0/216ms2896 KiB
8Futási hiba0/214ms2848 KiB
9Futási hiba0/216ms2868 KiB
10Futási hiba0/216ms2872 KiB
11Futási hiba0/216ms2876 KiB
12Futási hiba0/116ms2888 KiB
13Futási hiba0/116ms2952 KiB
14Futási hiba0/116ms3004 KiB
15Futási hiba0/116ms2904 KiB
16Futási hiba0/114ms2896 KiB
17Futási hiba0/116ms3068 KiB
18Futási hiba0/117ms3056 KiB
19Futási hiba0/117ms2984 KiB
20Futási hiba0/117ms2868 KiB
21Futási hiba0/114ms2952 KiB
22Futási hiba0/114ms2884 KiB
23Futási hiba0/116ms2872 KiB
24Futási hiba0/114ms2868 KiB
25Futási hiba0/216ms3048 KiB
26Futási hiba0/216ms3064 KiB
27Futási hiba0/216ms2872 KiB
28Futási hiba0/114ms2868 KiB
29Futási hiba0/214ms3044 KiB
30Futási hiba0/116ms3040 KiB
31Futási hiba0/114ms3084 KiB
32Futási hiba0/216ms3040 KiB
33Futási hiba0/214ms3236 KiB
34Futási hiba0/116ms2872 KiB
35Futási hiba0/216ms2868 KiB
36Futási hiba0/214ms2884 KiB
37Futási hiba0/216ms2824 KiB
38Futási hiba0/214ms2872 KiB
39Futási hiba0/116ms2820 KiB