# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1251377 | InternetPerson10 | Souvenirs (IOI25_souvenirs) | C++20 | 0 ms | 0 KiB |
#include "souvenirs.h"
#include <utility>
#include <vector>
using namespace std;
typedef long long ll;
ll counts[2001];
ll costs[2001];
void try_buy(int k, int n, ll p) {
}
pair<vector<int>, ll> make_transaction(ll P) {
vector<int> v;
ll x;
tie(v, x) = transaction(P);
for(int g : v) counts[g]++;
return {v, x};
}
void buy_souvenirs(int N, long long P0) {
for(int i = 0; i < N; i++) {
costs[i] = -1;
}
costs[0] = P0;
// pair<vector<int>, ll> res = transaction(3);
for(int i = 1; i < N; i++) {
auto p = make_transaction(costs[i-1]-1);
if(p.first.size() == 1 && p.second == 0) {
costs[i] = costs[i-1] - 1;
}
else {
costs[i] = costs[i-1] - 2;
}
while(counts[i] != i) make_transaction(costs[i]);
}
}