Submission #986411

#TimeUsernameProblemLanguageResultExecution timeMemory
986411PyqePacking Biscuits (IOI20_biscuits)C++17
100 / 100
37 ms1448 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; #define mp make_pair #define fr first #define sc second long long n=60,a[60]; multiset<pair<long long,long long>> ms; multiset<pair<long long,long long>>::iterator it; void ins(long long x,long long w) { multiset<pair<long long,long long>>::iterator it2=ms.lower_bound({x,0}); if(it2!=ms.end()&&it2->fr==x) { w+=it2->sc; ms.erase(it2); } ms.insert({x,w}); } long long count_tastiness(long long d,vector<long long> aa) { long long i,k,w,sm,sz=aa.size(); for(i=0;i<n;i++) { a[i]=0; if(i<sz) { a[i]=aa[i]; } a[i]<<=i; if(i) { a[i]+=a[i-1]; } } ms.clear(); ins(-1,0); ins((1ll<<n)-1,1); for(i=n-1;i+1;i--) { a[i]=min(a[i]/d,(1ll<<i+1)-1); sm=0; for(it=prev(ms.end());it->fr>a[i];) { w=it->sc; sm+=w; it--; ms.erase(next(it)); } ins(a[i],sm); sm=0; for(it=prev(ms.end());it->fr>(1ll<<i)-1;) { k=it->fr; w=it->sc; sm+=w; it--; ms.erase(next(it)); ins(k^1ll<<i,w); } ins((1ll<<i)-1,sm); } return prev(ms.end())->sc; }

Compilation message (stderr)

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:48:26: warning: suggest parentheses around '+' inside '<<' [-Wparentheses]
   48 |   a[i]=min(a[i]/d,(1ll<<i+1)-1);
      |                         ~^~
#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...