Submission #1314128

#TimeUsernameProblemLanguageResultExecution timeMemory
1314128AhmadAlhussainSouvenirs (IOI25_souvenirs)C++20
4 / 100
0 ms332 KiB
#include<bits/stdc++.h> using namespace std; pair<vector<int>,long long> transaction(long long M); int cnt=0; pair<vector<int>,long long>c[105]; long long k[105]; long long p1[105]; int let[105]; void remove(vector<int>v) { for(int i:v) { let[i]--; } } void buy_souvenirs(int N,long long p0) { for(int i=0;i<N;i++) { let[i]=i; } long long last=p0-1; while(true) { //cout<<last<<' '; auto [v,r]=transaction(last); remove(v); c[v.back()]={v,r}; k[v.back()]=last; long long sum=last-r; if(v.size()==1&&v.back()==N-1) { p1[N-1]=sum; break; } if(v.size()==1) { last=sum-1; } else { last=sum/long(v.size())-1; } } //cout<<'\n'; for(int i=N-2;i>=2;i++) { if(c[i].first.empty()) { auto [v,r]=transaction(2*p1[i+1]); remove(v); //cout<<2*p1[i+1]<<' '; p1[i]=2*p1[i+1]-r; for(i=0;i<long(v.size())-1;i++) { p1[i]-=v[i]; } } else { auto [v,r]=c[i]; remove(v); p1[i]=k[i]-r; for(i=0;i<long(v.size())-1;i++) { p1[i]-=v[i]; } } } for(int i=2;i<N;i++) { for(int j=0;j<let[i];j++) { //cout<<p1[i]<<' '; transaction(p1[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...