Submission #1254418

#TimeUsernameProblemLanguageResultExecution timeMemory
1254418vpinx선물 (IOI25_souvenirs)C++20
39 / 100
12 ms412 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); if (l.size() == 1) { for (int i = 0; i < 2; i++) auto [l2, r2] = transaction(p0 - r - 2); }else { long long sum = p0 - r - 1; auto [l2, r2] = transaction(sum / 2 - ((sum & 1) ^ 1)); } }else { vector<long long> p(n, -1LL), q(n, 0LL); p[0] = p0; long long sum = -1; for (int i = 1; i < n; i++) { auto [l, r] = transaction(p[i - 1] - 1); for (int j = 0; j < l.size(); j++) q[l[j]]++; if (l.size() == 1) { if (r == 0) p[i] = p[i - 1] - 1; else p[i] = p[i - 1] - 2; }else if (l.size() == 2) p[i] = p[i - 1] - 2; else { sum = p0 - r - 1; break; } } if (sum != -1) { for (int i = 2; i < n; i++) { sum /= 2; auto [l, r] = transaction(sum); sum -= r; } }else { for (int i = 1; i < n; i++) { while (q[i] < i) { auto [l, r] = transaction(p[i]); q[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...