Submission #1251787

#TimeUsernameProblemLanguageResultExecution timeMemory
1251787tranvinhhuy2010Souvenirs (IOI25_souvenirs)C++20
4 / 100
12 ms408 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int n, cnt[105] = {}; ll p[105] = {}; bool known[105] = {}; void adu_build(ll money) { auto [v, remain] = transaction(money); ll sum = money - remain; for (int i : v) cnt[i]++; while (v.size()>1) { while (known[v.back()]) { sum -= p[v.back()]; v.pop_back(); } if (known[v[0]+1]) break; adu_build((sum-1)/v.size()); } p[v[0]] = sum; known[v[0]] = true; } void adu_complete() { for (int i=1; i<n; i++) { while (cnt[i]<i) { transaction(p[i]); cnt[i]++; } } } void buy_souvenirs(int N, ll P0) { n = N; p[0] = P0; known[n] = true; adu_build(P0-1); adu_complete(); }
#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...