Submission #748136

#TimeUsernameProblemLanguageResultExecution timeMemory
748136Rafi22Packing Biscuits (IOI20_biscuits)C++14
100 / 100
410 ms18596 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define st first #define nd second #define pb push_back #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define ll long long ll mod=1000000007; int inf=1000000007; ll infl=1000000000000000007; ll P[67]; map<pair<int,ll>,ll>mem; map<pair<int,ll>,bool>was; ll f(int i,ll x) { x=min(x,(1LL<<(i+1))-1); if(i==0) return x+1; if(was[{i,x}]) return mem[{i,x}]; ll ans=0; if(x&(1LL<<i)) ans=f(i-1,P[i-1])+f(i-1,min(P[i-1],x-(1LL<<i))); else ans=f(i-1,min(x,P[i-1])); was[{i,x}]=1; return mem[{i,x}]=ans; } ll count_tastiness(ll x, vector<ll>w) { int k=sz(w); P[0]=w[0]; for(int i=1;i<60;i++) { P[i]=P[i-1]; if(i<k) P[i]+=w[i]*(1LL<<i); } for(int i=0;i<60;i++) P[i]/=x; was.clear(); return f(59,P[59]); }
#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...