#include<bits/stdc++.h>
#include "souvenirs.h"
using namespace std;
void buy_souvenirs(int N, long long P0) {
vector<long long> p(N, -1);
p[0] = P0;
vector<int> calls(N, 0);
function<void(long long)> solve = [&](long long c) {
long long sp = c - 1;
std::pair<std::vector<int>, long long> res = transaction(sp);
sp -= res.second;
for (int s : res.first) calls[s]++;
vector<int> sv = res.first;
while (true) {
for (int i = 0; i < sv.size();) {
if (p[sv[i]] != -1) {
sp -= p[sv[i]];
sv.erase(sv.begin() + i);
continue;
}
i++;
}
if (sv.size() == 1) {
p[sv[0]] = sp;
if (sv[0] < N - 1 && p[sv[0] + 1] == -1) solve(sp);
break;
}
solve(sp / sv.size() + 1);
}
};
for (int i = 1; i < N; i++) {
if (p[i] == -1) solve(p[i - 1]);
}
for (int i = 1; i < N; i++) {
while (calls[i] < i) {
transaction(p[i]);
calls[i]++;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |