124052024-12-16 22:46:24kukkermanBányász RPG (40 pont)cpp17Elfogadva 40/4028ms2700 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdint>

struct Alapanyag {
    int64_t tp_korlat;
    int64_t mennyiseg;
};

bool operator<(const Alapanyag &a, const Alapanyag &b) {
    return a.tp_korlat < b.tp_korlat;
}

std::vector<Alapanyag> beolvas(std::istream &be) {
    int n;
    be >> n;

    std::vector<Alapanyag> alapanyagok(n);
    for (auto &a: alapanyagok) {
        be >> a.tp_korlat;
    }
    for (auto &a: alapanyagok) {
        be >> a.mennyiseg;
    }

    return alapanyagok;
}

void feldolgoz(std::vector<Alapanyag> &alapanyagok) {
    sort(alapanyagok.begin(), alapanyagok.end());

    int64_t kibanyaszott = 0;
    int64_t eltelt_ido = 0;
    int k = 0, v = static_cast<int>(alapanyagok.size()) - 1;
    while (k <= v) {
        if (kibanyaszott >= alapanyagok[k].tp_korlat) {
            const int64_t akt_mennyiseg = alapanyagok[k].mennyiseg;

            kibanyaszott += akt_mennyiseg;
            eltelt_ido += akt_mennyiseg;
            //alapanyagok[k].mennyiseg = 0;
            k++;

        } else {
            const int64_t tp_korlathoz_szukseges = alapanyagok[k].tp_korlat - kibanyaszott;
            const int64_t akt_mennyiseg = std::min(tp_korlathoz_szukseges, alapanyagok[v].mennyiseg);

            kibanyaszott += akt_mennyiseg;
            eltelt_ido += 2 * akt_mennyiseg;
            alapanyagok[v].mennyiseg -= akt_mennyiseg;

            if (alapanyagok[v].mennyiseg == 0) {
                v--;
            }
        }
    }

    std::cout << eltelt_ido << '\n'; 
}

int main() {
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

    auto alapanyagok = beolvas(std::cin);
    feldolgoz(alapanyagok);

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms336 KiB
2Elfogadva0/06ms824 KiB
3Elfogadva2/21ms320 KiB
4Elfogadva2/21ms320 KiB
5Elfogadva2/24ms568 KiB
6Elfogadva2/28ms1168 KiB
7Elfogadva2/22ms320 KiB
8Elfogadva2/22ms320 KiB
9Elfogadva3/31ms320 KiB
10Elfogadva3/31ms432 KiB
11Elfogadva3/31ms320 KiB
12Elfogadva3/31ms320 KiB
13Elfogadva4/41ms624 KiB
14Elfogadva4/41ms320 KiB
15Elfogadva2/216ms1724 KiB
16Elfogadva2/220ms1992 KiB
17Elfogadva2/217ms1848 KiB
18Elfogadva2/228ms2700 KiB