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 |