Submission #1287839

#TimeUsernameProblemLanguageResultExecution timeMemory
1287839nikoloz-chSouvenirs (IOI25_souvenirs)C++20
25 / 100
14 ms400 KiB
#include <bits/stdc++.h> using namespace std; pair<vector<int>, long long> transaction(long long M); void buy_souvenirs(int N, long long P0){ if(N == 2){ auto pii = transaction(P0-1); return; } else if(N == 3){ auto pii = transaction(P0-1); if(pii.first.size() == 2){ auto p3 = transaction((P0-1-pii.second)/2); return; } auto p = transaction(P0-2-pii.second); auto p2 = transaction(P0-2-pii.second); return; } else{ long long l1 = P0; map<int,int> mp; for(int i = 0; i < N; i++) mp[i] = 0; int c = 0; for(int i = 1; i < N; i++){ bool tr = false; int cnt = 0; while(mp[i] < i){ if(c >= 4999) return; if(l1 <= 1) return; auto pii = transaction(l1-1); c++; for(auto t : pii.first){ if(t >= 0 && t < N) mp[t]++; } if(pii.first.size() == 2){ tr = true; } if(pii.second == 1ll){ tr = true; } cnt++; if(cnt > 5000) return; } bool bl = true; for(int k = 1; k < N; k++){ if(mp[k] < k){ bl = false; break; } } if(bl) return; l1--; if(l1 < 1) l1 = 1; if(tr){ if(l1 > 1) l1--; } } } }
#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...