149442025-02-09 10:47:32miszorimarciMaximális szorzat (50 pont)cpp17Elfogadva 50/5079ms2680 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long

const ll MOD = 1e9 + 7;

int main() {
    ll N, K, B;
    cin >> N >> K >> B;
    vector<ll> neg;
    priority_queue<ll, vector<ll>, greater<ll>> pq;
    for (int i = 0; i < N; i++) {
        ll x;
        cin >> x;
        if (x < 0) {
            neg.push_back(x);
        } else {
            pq.push(x);
        }
    }
    if (B > neg.size()) {
        cout << "-1\n";
        exit(0);
    }
    if (B == N) {
        for (int i = 0; i < B; i++) { pq.push(neg[i]); }

        while (K--) {
            ll mn = pq.top();
            pq.pop();
            if (mn + 1 >= 0) {
                cout << "-1\n";
                exit(0);
            }
            pq.push(mn + 1);
        }
        ll ans = 1;
        while (!pq.empty()) {
            ll mn = pq.top();
            pq.pop();
            ans *= -mn;
            ans %= MOD;
        }

        cout << ans << "\n";
        exit(0);
    }
    sort(neg.begin(), neg.end());
    ll ans = 1;
    for (int i = 0; i < B; i++) {
        ans *= -neg[i];
        ans %= MOD;
    }
    for (int i = B; i < neg.size(); i++) {
        K += neg[i];
        pq.push(0);
    }

    if (K < 0) {
        cout << "-1\n";
        exit(0);
    }
    while (K--) {
        ll mn = pq.top();
        pq.pop();
        pq.push((mn + 1) % MOD);
    }
    while (!pq.empty()) {
        ll mn = pq.top();
        pq.pop();
        ans *= mn;
        ans %= MOD;
    }
    cout << ans << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/04ms528 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms376 KiB
8Elfogadva2/21ms400 KiB
9Elfogadva2/21ms404 KiB
10Elfogadva2/27ms564 KiB
11Elfogadva2/272ms1544 KiB
12Elfogadva1/178ms1516 KiB
13Elfogadva1/11ms316 KiB
14Elfogadva1/18ms564 KiB
15Elfogadva1/119ms944 KiB
16Elfogadva1/141ms940 KiB
17Elfogadva1/121ms940 KiB
18Elfogadva1/112ms944 KiB
19Elfogadva1/174ms2680 KiB
20Elfogadva1/161ms2576 KiB
21Elfogadva1/179ms2564 KiB
22Elfogadva1/128ms2576 KiB
23Elfogadva1/176ms1084 KiB
24Elfogadva1/178ms1328 KiB
25Elfogadva2/22ms400 KiB
26Elfogadva2/26ms564 KiB
27Elfogadva2/243ms1336 KiB
28Elfogadva1/145ms1472 KiB
29Elfogadva2/218ms948 KiB
30Elfogadva1/163ms1496 KiB
31Elfogadva1/137ms1540 KiB
32Elfogadva2/23ms316 KiB
33Elfogadva2/264ms1448 KiB
34Elfogadva1/165ms1460 KiB
35Elfogadva2/268ms1540 KiB
36Elfogadva2/263ms1452 KiB
37Elfogadva2/263ms1348 KiB
38Elfogadva2/263ms1312 KiB
39Elfogadva1/12ms316 KiB