Submission #1306104

#TimeUsernameProblemLanguageResultExecution timeMemory
1306104exoworldgdSouvenirs (IOI25_souvenirs)C++20
7 / 100
13 ms332 KiB
#include <bits/stdc++.h> #include "souvenirs.h" #define ll long long #define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0) using namespace std; void buy_souvenirs(int N,ll P0) { ll p[N]; int b[N],ft; queue<pair<int,ll>>q; memset(p,-1,sizeof p),memset(b,0,sizeof b),p[0]=P0,q.push({1,P0}); while(q.size()) { auto[idx,up]=q.front();q.pop(); if(idx>=N||p[idx]^-1)continue; auto[it,ch]=transaction(up-1); for(int t:it)b[t]++; int pd[N],ps=0; ll lo=ch; for(int i=it.size()-1,t;i;i--)t=it[i],p[t]^-1?pd[ps++]=t,0:lo+=p[t]; if(ps) { ll rm=up-1-lo,av=rm/(ps+1)+1; for(int i=0;i<ps;i++)q.push({pd[i],av}); q.push({idx,up}); continue; } ft=it[0],p[ft]=up-1-lo,q.push({ft+1,p[ft]}); } for(int i=1;i<N;i++) { while(b[i]<i) { auto[it,ch]=transaction(p[i]); for(int t:it)b[t]++; } } }
#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...