57302023-09-10 17:19:59kukkermanBányász RPG (40 pont)cpp14Hibás válasz 36/4068ms4896 KiB
#include <iostream>
#include <vector>
#include <algorithm>

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

    std::vector<std::pair<int, int>> 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<int, int>> 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;
    int 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ÖsszpontTesztVerdiktIdőMemória
base36/40
1Elfogadva0/03ms1812 KiB
2Elfogadva0/014ms2256 KiB
3Elfogadva2/22ms2092 KiB
4Elfogadva2/23ms2228 KiB
5Elfogadva2/210ms2656 KiB
6Elfogadva2/219ms2824 KiB
7Elfogadva2/24ms2788 KiB
8Elfogadva2/26ms3020 KiB
9Elfogadva3/32ms3064 KiB
10Elfogadva3/32ms3192 KiB
11Elfogadva3/32ms3400 KiB
12Elfogadva3/33ms3396 KiB
13Elfogadva4/43ms3596 KiB
14Elfogadva4/43ms3676 KiB
15Hibás válasz0/237ms4496 KiB
16Elfogadva2/248ms4508 KiB
17Hibás válasz0/241ms4376 KiB
18Elfogadva2/268ms4896 KiB