Submission #1249647

#TimeUsernameProblemLanguageResultExecution timeMemory
1249647NekoRollySouvenirs (IOI25_souvenirs)C++20
39 / 100
12 ms412 KiB
#include "souvenirs.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; void my_transaction(ll m,vector<int> &vec,ll &res){ auto x = transaction(m); vec = x.first; res = x.second; } void buy_souvenirs(int n,ll p0) { vector<int> vec; ll res; ll p[n] = {0}; p[0] = p0; if (n == 2) transaction(p0-1); else if (n == 3){ my_transaction(p0-1, vec, res); if (vec.size() == 1){ p[1] = p0-1 - res; transaction(p[1]-1); transaction(p[1]-1); } else{ ll mx = (p0-1-res-1)/2; transaction(mx); } } else{ int freq[n] = {0}; for (int i=1; i<n; i++){ if (p[i] == 0){ my_transaction(p[i-1]-1, vec, res); if (vec.size() == 2){ p[i] = p[i-1]-2, p[n-1] = 1; freq[i]++, freq[n-1]++; } else if (res == 1){ p[i] = p[i-1]-2; freq[i]++; } else{ p[i] = p[i-1]-1; freq[i]++; } } while (freq[i] < i){ transaction(p[i]); freq[i]++; } } } return; }
#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...