Submission #1269291

#TimeUsernameProblemLanguageResultExecution timeMemory
1269291sula2Souvenirs (IOI25_souvenirs)C++20
53 / 100
12 ms408 KiB
#include <bits/stdc++.h> #include "souvenirs.h" using namespace std; void buy_souvenirs(int N, long long P0) { long long P[N] = {}, Q[N] = {}; P[0] = P0; vector<int> S[N]; long long q = P0 - 1; while (true) { auto [a, b] = transaction(q); auto sum = q - b; S[a[0]] = a; P[a[0]] = sum; q = a.size() == 1 ? sum - 1 : sum/a.size(); for (int i : a) Q[i]++; if (a[0] == N-1) break; } for (int i = N-1; i > 0; i--) { if (S[i].empty()) { tie(S[i], P[i]) = transaction(2*P[i+1]); P[i] = 2*P[i+1] - P[i]; for (int j : S[i]) Q[j]++; } for (int j : S[i]) if (i < j) P[i] -= P[j]; } for (int i = 1; i < N; i++) { while (Q[i] < i) { 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...