# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1254273 | vpinx | Souvenirs (IOI25_souvenirs) | C++20 | 0 ms | 0 KiB |
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
extern pair<vector<int>, long long> transaction(long long m);
void buy_souvenirs(int n, long long p0) {
if (n == 2) auto [l, r] = transaction(p0 - 1);
else if (n == 3) {
auto [l, r] = transaction(p0 - 1);
add(l);
if (l.size() == 1) {
for (int i = 0; i < 2; i++) {
auto [l2, r2] = transaction(p0 - r - 2);
add(l2);
}
}else {
long long sum = p0 - r - 1;
auto [l2, r2] = transaction(sum / 2 - ((sum & 1) ^ 1));
add(l2);
}
}else {
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
auto [l, r] = transaction(n - i);
add(l);
}
}
}
}