7202 2024. 01. 03 13:02:50 MagyarKendeSZLG Bányász RPG (40 pont) cpp17 Elfogadva 40/40 35ms 5460 KiB
#include <bits/stdc++.h>

#define speed cin.tie(0); ios::sync_with_stdio(0)
#define cinv(v) for (auto& e : v) cin >> e;
#define all(v) v.begin(), v.end()
#define has(s, e) s.count(e)

using namespace std;
using ll = long long;
using point = array<int, 2>;

int main() {
    speed;

    int N;
    cin >> N;
    vector<point> v(N);

    for (int i = 0; i < N; i++) cin >> v[i][0];
    for (int i = 0; i < N; i++) cin >> v[i][1];

    sort(all(v));

    ll t = 0, xp = 0;
    int l = 0, r = N - 1;
    while (l <= r) {
        if (v[l][0] <= xp) {
            // finish the remaining in one sitting (yum)
            t += v[l][1];
            xp += v[l][1];
            v[l] = {0, 0};
            l++;
        } else {
            // if had to finish the inefficient way, this is done (mining be boring aa hell)
            if (--v[r][1] == 0) r--;
            t += 2; // go one by one here, time and xp gain is constant
            xp++;
        }
    }

    cout << t;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 8ms 2268 KiB
3 Elfogadva 2/2 3ms 2232 KiB
4 Elfogadva 2/2 3ms 2456 KiB
5 Elfogadva 2/2 8ms 2884 KiB
6 Elfogadva 2/2 14ms 3312 KiB
7 Elfogadva 2/2 4ms 3172 KiB
8 Elfogadva 2/2 4ms 3256 KiB
9 Elfogadva 3/3 3ms 3408 KiB
10 Elfogadva 3/3 3ms 3508 KiB
11 Elfogadva 3/3 3ms 3988 KiB
12 Elfogadva 3/3 3ms 3960 KiB
13 Elfogadva 4/4 3ms 3976 KiB
14 Elfogadva 4/4 3ms 4124 KiB
15 Elfogadva 2/2 21ms 5028 KiB
16 Elfogadva 2/2 28ms 5116 KiB
17 Elfogadva 2/2 23ms 4940 KiB
18 Elfogadva 2/2 35ms 5460 KiB