Submission #1154340

#TimeUsernameProblemLanguageResultExecution timeMemory
1154340dpsaveslivesPacking Biscuits (IOI20_biscuits)C++20
35 / 100
6 ms840 KiB
#include <bits/stdc++.h> #define ll long long #include "biscuits.h" using namespace std; ll dp[65],sum[65],arr[65]; ll calc(ll pos, ll y, int p){ if(pos == 0) return min(min(sum[0],y),1ll)+1; if(p == 1 && y >= sum[pos]) return dp[pos]; ll res = calc(pos-1,y,1); if(y >= (1ll<<(pos+1))-1){ res += dp[pos-1]; } else if(y >= (1ll<<pos)){ res += calc(pos-1,y-(1ll<<pos),1); } return res; } ll count_tastiness(ll x, vector<ll> a){ memset(dp,0,sizeof(dp)); for(int i = 0;i<a.size();++i) arr[i] = a[i]; for(int i = 0;i<60;++i){ sum[i] = arr[i]*(1ll<<i); } for(int i = 1;i<60;++i){ sum[i] += sum[i-1]; } for(int i = 0;i<60;++i) sum[i] /= x; for(int i = 0;i<60;++i){ dp[i] = calc(i,sum[i],0); } return dp[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...