Submission #1255505

#TimeUsernameProblemLanguageResultExecution timeMemory
1255505AvianshSouvenirs (IOI25_souvenirs)C++20
39 / 100
12 ms412 KiB
#include "souvenirs.h" #include <utility> #include <vector> #include <bits/stdc++.h> using namespace std; void buy_souvenirs(int n, long long P0) { //pair<vector<int>, long long> res = transaction(3); if(n==2){ transaction(P0-1); return; } else if(n==3){ pair<vector<int>,long long>res = transaction(P0-1); if(res.first.size()==1){ long long req = P0-1-res.second-1; transaction(req); transaction(req); } else{ long long req = (P0-1-res.second)/2; transaction(req); } return; } else{ //cas 3 long long curr = P0-1; int req[n]; iota(req,req+n,0); long long val[n]; val[0]=P0; for(int i = 0;i<n;i++){ while(req[i]){ pair<vector<int>, long long> res = transaction(curr); assert(res.first.size()<=2); for(int i : res.first){ req[i]--; } if(res.first.size()==2){ assert(res.first[1]==n-1); assert(res.second==0); val[i]=curr-1; curr--; } else if (res.second){ assert(res.second==1); curr--; val[i]=curr; } else{ val[i]=curr; } } curr=val[i]-1; } 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...