136122025-01-08 11:24:05EsVagyBányász RPG (40 pont)cpp17Hibás válasz 0/4061ms1268 KiB
#include <bits/stdc++.h>

using namespace std;

struct material {
    int xp, needed;

    bool operator<(const material& other) const {
        return this->xp < other.xp;
    }
};

int main()
{
    int n;
    cin >> n;
    vector<material> materials(n);
    for (int i = 0; i < n; i++) {
        cin >> materials[i].xp;
    }
    for (int i = 0; i < n; i++) {
        cin >> materials[i].needed;
    }

    sort(materials.begin(), materials.end());
    int start = 0;
    int end = n - 1;
    int xp = 0;
    int ans = 0;
    while (start <= end) {
        if (xp >= materials[start].xp) {
            xp += materials[start].needed;
            ans += materials[start].needed;
            start++;
        } else {
            int diff = materials[start].xp - xp;
            int sub = min(diff, materials[end].needed);
            xp += sub;
            materials[end].needed -= sub;
            ans += 2 * materials[end].needed;
            if (materials[end].needed == 0) {
                end--;
            }
        }
    }

    cout << ans << endl;

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/40
1Elfogadva0/01ms316 KiB
2Hibás válasz0/012ms316 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/28ms496 KiB
6Hibás válasz0/217ms660 KiB
7Hibás válasz0/23ms428 KiB
8Hibás válasz0/24ms432 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms384 KiB
12Hibás válasz0/31ms404 KiB
13Hibás válasz0/41ms316 KiB
14Hibás válasz0/41ms508 KiB
15Hibás válasz0/235ms796 KiB
16Hibás válasz0/246ms820 KiB
17Hibás válasz0/239ms840 KiB
18Hibás válasz0/261ms1268 KiB