Submission #1254709

#TimeUsernameProblemLanguageResultExecution timeMemory
1254709lorpuSouvenirs (IOI25_souvenirs)C++20
100 / 100
13 ms420 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...