Submission #1257237

#TimeUsernameProblemLanguageResultExecution timeMemory
1257237stapanulocu1Souvenirs (IOI25_souvenirs)C++20
4 / 100
0 ms412 KiB
#include <bits/stdc++.h> using namespace std; const int N = 100; pair<vector<int>, long long> transaction(long long M); int n; struct el { vector<int> s; long long b, r; }; vector<el> q; long long value[N]; int number[N]; void update_data(el &r) { for (int i = 0; i < r.s.size(); ++i) { if (value[r.s[i]]) { r.b -= value[r.s[i]]; r.s.erase(r.s.begin() + i); --i; } } } void do_q(long long a) { pair<vector<int>, long long> result = transaction(a); el b; b.s = result.first; b.b = a; b.r = result.second; for (int i = 0; i < b.s.size(); ++i) { number[b.s[i]]++; } update_data(b); q.push_back(b); } void figure_smallest(el va) { if (va.s.size() == 1) { value[va.s[0]] = va.b - va.r; for (int i = 0; i < q.size(); ++i) update_data(q[i]); return; } long long avg = (va.b - va.r) / va.s.size(); do_q(avg); figure_smallest(q.back()); } void finish_all() { for (int i = 0; i < n; ++i) { while (number[i] < i) { do_q(value[i]); } } } void buy_souvenirs(int nu, long long P0) { n = nu; value[0] = P0; do_q(P0 - 1); figure_smallest(q.front()); finish_all(); }
#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...