Submission #1249533

#TimeUsernameProblemLanguageResultExecution timeMemory
1249533qwerasdfzxclSouvenirs (IOI25_souvenirs)C++20
100 / 100
12 ms420 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; using ll = long long; int N, a[101]; ll P[101]; pair<vector<int>, ll> query(ll val){ auto ret = transaction(val); for (auto &x:ret.first) a[x]++; return ret; } int dfs(ll val, int M){ auto [V, R] = query(val); assert(V[0] < M); ll T = val - R; int cur = V[0]; while(true){ while(V.back() >= M){ T -= P[V.back()]; V.pop_back(); } if (cur+1 == M) break; M = dfs((T-1) / (int)V.size(), M); } P[cur] = T; return cur; } void buy_souvenirs(int N, long long P0){ ::N = N; dfs(P0-1, N); for (int i=1;i<N;i++){ for (int j=a[i];j<i;j++) query(P[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...