155582025-02-20 12:35:56xxxMaximális szorzat (50 pont)cpp17Hibás válasz 44/5045ms2368 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int INF = 3000000;
const int MOD = 1e9+7;


signed main() {
    ios_base::sync_with_stdio(0);
    cout.tie(0);
    int n, k, b;
    cin >> n >> k >> b;

    vector<int> a(n+1);
    vector<int> negv;
    priority_queue<int, vector<int>, greater<int>> pq;
    int negc = 0, negmax = -INF;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        if (a[i] < 0) {
            negc++;
            negv.push_back((-1)*a[i]);
        } else {
            pq.push(a[i]);
        }
    }

    if (negc < b) {
        cout << -1 << endl;
        return 0;
    }
    sort(negv.begin(), negv.end());

    int bc = negc-b, kc = k;
    for(int i = 0; i < negc; i++) {
        if (bc > 0) {
            if (negv[i] > kc) {
                cout << -1 << endl;
                return 0;
            } else {
                kc -= negv[i];
                bc--;
                negv[i] = 0;
                pq.push(0);
            }
        }
    }

    while (kc > 0 &&!pq.empty()) {
        int X = pq.top();
        pq.pop();
        pq.push(X+1);
        kc--;
    }
    if (pq.empty()) {cout << -1 << endl;return 0;}
    int ans = 1;

    for(int i = 0; i < negc; i++) {
        if (negv[i] != 0) {
            ans *= negv[i];
            ans %= MOD;
        }
    }
    //cout << ans << "n\n";

    while(!pq.empty()) {
        int X = pq.top();
        ans *= X;
        ans %= MOD;
        pq.pop();
    }
    cout << ans << endl;

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base44/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva0/01ms316 KiB
5Elfogadva0/04ms564 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms556 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/24ms564 KiB
11Elfogadva2/241ms2268 KiB
12Elfogadva1/145ms2368 KiB
13Elfogadva1/11ms500 KiB
14Elfogadva1/14ms564 KiB
15Elfogadva1/110ms1268 KiB
16Elfogadva1/128ms1416 KiB
17Elfogadva1/113ms1456 KiB
18Elfogadva1/17ms1460 KiB
19Hibás válasz0/124ms2340 KiB
20Hibás válasz0/118ms2224 KiB
21Hibás válasz0/129ms2156 KiB
22Elfogadva1/114ms2224 KiB
23Elfogadva1/143ms2008 KiB
24Elfogadva1/145ms2252 KiB
25Elfogadva2/21ms508 KiB
26Elfogadva2/23ms564 KiB
27Hibás válasz0/214ms1472 KiB
28Hibás válasz0/114ms1340 KiB
29Elfogadva2/28ms1524 KiB
30Elfogadva1/132ms2312 KiB
31Elfogadva1/116ms2224 KiB
32Elfogadva2/22ms316 KiB
33Elfogadva2/232ms2308 KiB
34Elfogadva1/132ms2224 KiB
35Elfogadva2/234ms2196 KiB
36Elfogadva2/232ms2260 KiB
37Elfogadva2/230ms2196 KiB
38Elfogadva2/230ms2288 KiB
39Elfogadva1/12ms316 KiB