#include <bits/stdc++.h>
using namespace std;
#define nl "\n"
#define nf endl
#define ll long long
#define pb push_back
#define _ << ' ' <<
#define INF (ll)1e18
#define mod 998244353
#define maxn 110
#include "souvenirs.h"
#include <utility>
#include <vector>
void buy_souvenirs(int N, long long P0) {
// subtask 5
vector<ll> P(N, 0), rem(N, 0);
iota(rem.begin(), rem.end(), 0);
P[0] = P0;
auto trans = [&](ll M) {
auto [v, rem_money] = transaction(M);
/* cerr << "trans" _ M << nf;
for (auto u : v) cerr << u << ' ';
cerr << nf; */
for (auto u : v) rem[u]--;
return pair<vector<int>, ll>{v, rem_money};
};
auto [v, rem_money] = trans(P[0] - 1);
if (v.size() == 2) {
ll sum = P[0] - 1 - rem_money;
assert(sum >= 2);
trans(sum / 2);
} else {
P[1] = P[0] - 1 - rem_money;
trans(P[1] - 1); trans(P[1] - 1);
}
}
# | 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... |