Submission #749792

#TimeUsernameProblemLanguageResultExecution timeMemory
749792bachhoangxuanPacking Biscuits (IOI20_biscuits)C++17
100 / 100
22 ms1320 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define fi first #define se second long long count_tastiness(long long x, std::vector<long long> a) { int k=60;a.resize(k); for(int i=1;i<k;i++) a[i]=a[i]*(1LL<<i)+a[i-1]; for(int i=0;i<k;i++) a[i]/=x,a[i]=min(a[i],(1LL<<(i+1))-1); vector<pii> cur;cur.push_back({min(a[k-1],(1LL<<k)-1),1}); for(int i=k-1;i>=0;i--){ vector<pii> nw; int sum=0; for(pii x:cur){ nw.push_back({min(x.fi&((1LL<<i)-1),(i==0?0:a[i-1])),x.se}); if(x.fi>=(1LL<<i)) sum+=x.se; } if(sum!=0) nw.push_back({min((1LL<<i)-1,(i==0?0:a[i-1])),sum}); cur.clear();sort(nw.begin(),nw.end()); for(pii x:nw){ if(cur.empty() || x.fi!=cur.back().fi) cur.push_back(x); else cur.back().se+=x.se; } } return (cur.empty()?0:cur[0].se); }
#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...