134112025-01-07 20:52:23Vkrisztian01Maximális szorzat (50 pont)cpp17Accepted 50/50104ms2732 KiB
#include <iostream>
#include<bits/stdc++.h>

using namespace std;
using ll = long long int ;
const ll mod = 1e9 + 7 ;

int main()
{
    ll n , k , b ;
    cin >> n >> k >> b ;

    priority_queue<ll> pq1 ;
    priority_queue<ll , vector<ll> , greater<ll> > pq2 ;

    while(n--)
    {
        ll a ;
        cin >> a ;

        if(a < 0)
            pq1.push(a) ;
        else
            pq2.push(a) ;
    }

    if(pq1.size() < b)
    {
        cout << -1 ;
        return 0 ;
    }

    while(pq1.size() != b)
    {
        k += pq1.top() ;
        pq2.push(0) ;

        pq1.pop() ;
    }

    if(k < 0)
    {
        cout << -1 ;
        return 0 ;
    }

    while(k > 0 && !pq2.empty())
    {
        ll a = pq2.top() ;
        pq2.pop() ;

        ++a ;
        pq2.push(a) ;
        k-- ;
    }

    if(k > 0)
    {
        priority_queue<ll , vector<ll> , greater<ll> > pq3 ;
        while(!pq1.empty())
        {
            pq3.push(pq1.top()) ;
            pq1.pop() ;
        }

        while(k--)
        {
            ll a = pq3.top() ;
            pq3.pop() ;

            a++ ;
            if(a == 0)
            {
                cout << -1 ;
                return 0 ;
            }
            pq3.push(a) ;
        }

        while(!pq3.empty())
        {
            pq1.push(pq3.top()) ;
            pq3.pop() ;
        }
    }

    ll ans = 1 ;
    while(!pq1.empty())
    {
        ans *= abs(pq1.top()) ;
        ans %= mod ;
        pq1.pop() ;
    }

    while(!pq2.empty())
    {
        ans *= abs(pq2.top()) ;
        ans %= mod ;
        pq2.pop() ;
    }

    cout << ans ;

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted0/01ms316 KiB
4Accepted0/01ms316 KiB
5Accepted0/04ms564 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/27ms564 KiB
11Accepted2/268ms1444 KiB
12Accepted1/175ms1548 KiB
13Accepted1/11ms316 KiB
14Accepted1/17ms564 KiB
15Accepted1/118ms928 KiB
16Accepted1/139ms996 KiB
17Accepted1/118ms944 KiB
18Accepted1/110ms988 KiB
19Accepted1/190ms2732 KiB
20Accepted1/175ms2676 KiB
21Accepted1/1104ms2728 KiB
22Accepted1/135ms2492 KiB
23Accepted1/176ms1280 KiB
24Accepted1/175ms1532 KiB
25Accepted2/21ms316 KiB
26Accepted2/26ms564 KiB
27Accepted2/257ms1520 KiB
28Accepted1/157ms1504 KiB
29Accepted2/219ms932 KiB
30Accepted1/168ms1448 KiB
31Accepted1/135ms1404 KiB
32Accepted2/22ms412 KiB
33Accepted2/268ms1476 KiB
34Accepted1/168ms1436 KiB
35Accepted2/271ms1480 KiB
36Accepted2/267ms1456 KiB
37Accepted2/267ms1452 KiB
38Accepted2/268ms1540 KiB
39Accepted1/12ms316 KiB