232532026-01-16 20:03:44MrkzMaximális szorzat (50 pont)cpp17Hibás válasz 6/5078ms4540 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    const int MOD = 1000000007;
    long long N, K, b;
    cin >> N >> K >> b;
    vector<long long> szamok(N);

    for (int i = 0; i < N; i++)
    {
        cin >> szamok[i];
    }

    vector<pair<long long, int>> negs;

    for (int i = 0; i < N; i++)
    {
        if (szamok[i] < 0)
        {

            negs.push_back({szamok[i], i});
        }
    }

    long long eltavolitas = negs.size() - b;
    if (eltavolitas < 0)
    {
        cout << -1 << "\n";
        return 0;
    }
    sort(negs.begin(), negs.end());

    for (int j = 0; j < eltavolitas; j++)
    {
        int idx = negs[j].second;
        K += szamok[idx];
        szamok[idx] = 0;
    }
    if (K < 0)
    {
        cout << -1 << "\n";
        return 0;
    }
    vector<long long> pos;
    for (int i = 0; i < N; i++)
    {
        if (szamok[i] > 0)
            pos.push_back(szamok[i]);
        else if (szamok[i] == 0 && K > 0)
        {
            szamok[i] = 1;
            pos.push_back(1);
            K--;
        }
        else
        {
            pos.push_back(szamok[i]);
        }
    }
    sort(pos.begin(), pos.end());

    queue<long long> q;
    for (auto x : pos)
        q.push(x);

    while (K > 0 && !q.empty())
    {
        long long x = q.front();
        q.pop();
        x++;
        q.push(x);
        K--;
    }

    long long res = 1;
    while (!q.empty())
    {
        long long x = q.front();
        q.pop();
        res = (res * ((x + MOD) % MOD)) % MOD;
    }
    cout << res << "\n";

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Hibás válasz0/01ms316 KiB
4Elfogadva0/01ms316 KiB
5Hibás válasz0/04ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/21ms316 KiB
10Hibás válasz0/26ms564 KiB
11Hibás válasz0/257ms2728 KiB
12Hibás válasz0/161ms2584 KiB
13Hibás válasz0/11ms316 KiB
14Hibás válasz0/14ms564 KiB
15Elfogadva1/119ms1200 KiB
16Hibás válasz0/124ms1708 KiB
17Elfogadva1/125ms2220 KiB
18Elfogadva1/112ms1452 KiB
19Hibás válasz0/163ms4528 KiB
20Hibás válasz0/152ms4384 KiB
21Hibás válasz0/178ms4516 KiB
22Hibás válasz0/143ms4540 KiB
23Hibás válasz0/170ms3496 KiB
24Hibás válasz0/161ms2732 KiB
25Hibás válasz0/22ms508 KiB
26Hibás válasz0/26ms820 KiB
27Hibás válasz0/239ms2452 KiB
28Hibás válasz0/139ms2452 KiB
29Elfogadva2/219ms1964 KiB
30Hibás válasz0/164ms3356 KiB
31Elfogadva1/134ms1200 KiB
32Hibás válasz0/23ms316 KiB
33Hibás válasz0/264ms3496 KiB
34Hibás válasz0/178ms4516 KiB
35Hibás válasz0/264ms3360 KiB
36Hibás válasz0/264ms3240 KiB
37Hibás válasz0/264ms3364 KiB
38Hibás válasz0/264ms4240 KiB
39Hibás válasz0/12ms508 KiB