116552024-11-03 17:18:24MagyarKendeSZLGMaximális szorzat (50 pont)cpp17Hibás válasz 43/5076ms2824 KiB
#include <algorithm>
#include <cassert>
#include <iostream>
#include <queue>
#include <vector>

using namespace std;
using ll = long long;

const ll MOD = 1e9 + 7;

int main() {
    ll N, K, B;
    cin >> N >> K >> B;

    vector<ll> neg, pos;
    for (int i = 0; i < N; i++) {
        ll x;
        cin >> x;
        if (x < 0) {
            neg.push_back(x);
        } else {
            pos.push_back(x);
        }
    }

    if (neg.size() < B) {
        cout << "-1\n";
        exit(0);
    }

    sort(neg.rbegin(), neg.rend());
    ll result = 1;
    for (int i = 0; i < B; i++) {
        result *= -neg.back();
        result %= MOD;
        neg.pop_back();
    }

    priority_queue<ll, vector<ll>, greater<ll>> pq;
    for (int i = 0; i < pos.size(); i++) {
        pq.push(pos[i]);
    }
    for (int i = 0; i < neg.size(); i++) {
        pq.push(neg[i]);
    }

    if (!pq.empty()) {
        for (int i = 0; i < K; i++) {
            ll mn = pq.top();
            pq.pop();
            pq.push(mn + 1);
        }

        if (pq.top() < 0) {
            cout << "-1\n";
            exit(0);
        }

        while (!pq.empty()) {
            ll mn = pq.top();
            pq.pop();
            result *= mn;
            result %= MOD;
        }
    }

    cout << result << "\n";
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base43/50
1Elfogadva0/01ms320 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva0/01ms508 KiB
4Elfogadva0/01ms320 KiB
5Elfogadva0/04ms568 KiB
6Elfogadva2/21ms320 KiB
7Elfogadva2/21ms320 KiB
8Elfogadva2/21ms320 KiB
9Elfogadva2/21ms320 KiB
10Elfogadva2/27ms704 KiB
11Elfogadva2/271ms2640 KiB
12Elfogadva1/176ms2556 KiB
13Elfogadva1/12ms320 KiB
14Elfogadva1/17ms380 KiB
15Elfogadva1/130ms1036 KiB
16Elfogadva1/137ms1256 KiB
17Elfogadva1/132ms948 KiB
18Elfogadva1/112ms1452 KiB
19Hibás válasz0/143ms1448 KiB
20Hibás válasz0/132ms1456 KiB
21Hibás válasz0/161ms1564 KiB
22Hibás válasz0/126ms1372 KiB
23Elfogadva1/175ms1860 KiB
24Elfogadva1/176ms2824 KiB
25Elfogadva2/21ms320 KiB
26Elfogadva2/24ms568 KiB
27Hibás válasz0/230ms1036 KiB
28Hibás válasz0/130ms1044 KiB
29Elfogadva2/218ms1020 KiB
30Elfogadva1/163ms1492 KiB
31Elfogadva1/137ms2500 KiB
32Elfogadva2/23ms320 KiB
33Elfogadva2/261ms1456 KiB
34Elfogadva1/164ms1516 KiB
35Elfogadva2/265ms1544 KiB
36Elfogadva2/261ms1500 KiB
37Elfogadva2/263ms1456 KiB
38Elfogadva2/261ms1404 KiB
39Elfogadva1/12ms320 KiB