57312023-09-10 17:33:20kukkermanBányász RPG (40 pont)cpp14Elfogadva 40/4065ms6228 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ÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/03ms1812 KiB
2Elfogadva0/014ms2316 KiB
3Elfogadva2/23ms2492 KiB
4Elfogadva2/23ms2420 KiB
5Elfogadva2/210ms2800 KiB
6Elfogadva2/219ms3520 KiB
7Elfogadva2/24ms3124 KiB
8Elfogadva2/26ms3348 KiB
9Elfogadva3/32ms3184 KiB
10Elfogadva3/33ms3312 KiB
11Elfogadva3/32ms3392 KiB
12Elfogadva3/33ms3396 KiB
13Elfogadva4/43ms3408 KiB
14Elfogadva4/43ms3524 KiB
15Elfogadva2/239ms5088 KiB
16Elfogadva2/250ms5688 KiB
17Elfogadva2/241ms5180 KiB
18Elfogadva2/265ms6228 KiB