5731 2023. 09. 10 17:33:20 kukkerman Bányász RPG (40 pont) cpp14 Elfogadva 40/40 65ms 6228 KiB
#include <iostream>
#include <vector>
#include <algorithm>

std::vector<std::pair<size_t, size_t>> beolvas(std::istream &in) {
    size_t n;
    in >> n;

    std::vector<std::pair<size_t, size_t>> v(n);

    for (auto i = 0u; i < n; i++) {
        in >> v[i].first;
    }

    for (auto i = 0u; i < n; i++) {
        in >> v[i].second;
    }

    return v;
}

void feldolgoz(std::vector<std::pair<size_t, size_t>> v) {
    std::sort(v.begin(), v.end(), [](const auto &a, const auto &b) {
        return a.first < b.first;
    });

    size_t i = 0;
    size_t j = v.size() - 1;
    size_t ido = 0;
    size_t tp = 0;
    while (i <= j) {
        if (tp < v[i].first) {
            const auto hianyzo_tp = v[i].first - tp;

            if (v[j].second <= hianyzo_tp) {
                ido += v[j].second * 2;
                tp += v[j].second;
                j--;

            } else {
                v[j].second -= hianyzo_tp;
                ido += hianyzo_tp * 2;
                tp += hianyzo_tp;
            }

        } else {
            ido += v[i].second;
            tp += v[i].second;
            i++;
        }
    }

    std::cout << ido << std::endl;
}

int main() {
    auto v = beolvas(std::cin);
    feldolgoz(std::move(v));

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 14ms 2316 KiB
3 Elfogadva 2/2 3ms 2492 KiB
4 Elfogadva 2/2 3ms 2420 KiB
5 Elfogadva 2/2 10ms 2800 KiB
6 Elfogadva 2/2 19ms 3520 KiB
7 Elfogadva 2/2 4ms 3124 KiB
8 Elfogadva 2/2 6ms 3348 KiB
9 Elfogadva 3/3 2ms 3184 KiB
10 Elfogadva 3/3 3ms 3312 KiB
11 Elfogadva 3/3 2ms 3392 KiB
12 Elfogadva 3/3 3ms 3396 KiB
13 Elfogadva 4/4 3ms 3408 KiB
14 Elfogadva 4/4 3ms 3524 KiB
15 Elfogadva 2/2 39ms 5088 KiB
16 Elfogadva 2/2 50ms 5688 KiB
17 Elfogadva 2/2 41ms 5180 KiB
18 Elfogadva 2/2 65ms 6228 KiB