#include <bits/stdc++.h>
using namespace std;
pair<vector<int>, long long> transaction(long long M);
void buy_souvenirs(int N, long long P0) {
vector<long long> P(N, -1);
vector<long long> got(N, 0);
P[0] = P0;
long long sum_known = 0;
for (int i = N - 1; i >= 1; --i) {
long long M = P0 - 1 - sum_known;
if (M < 0) M = 0;
auto res = transaction(M);
auto &L = res.first;
long long R = res.second;
long long paid = M - R;
vector<bool> seen(N, false);
for (int t : L) {
got[t]++;
seen[t] = true;
}
long long subtract = 0;
for (int j = i + 1; j < N; ++j)
if (seen[j])
subtract += P[j];
long long Pi = paid - subtract;
P[i] = Pi;
sum_known += Pi;
}
for (int i = 1; i < N; ++i) {
long long need = i - got[i];
while (need > 0) {
transaction(P[i]);
--need;
}
}
}
| # | 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... |