Submission #787696

#TimeUsernameProblemLanguageResultExecution timeMemory
787696raysh07Packing Biscuits (IOI20_biscuits)C++17
100 / 100
48 ms1344 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const int mxk = 60; map<ll, ll> memo; ll solve(ll n, ll x, vector<ll> &pref) { if(n == 1) return 1; if(n <= 0) return 0; if(memo.count(n)) return memo[n]; ll val = 0; int msb = 63-__builtin_clzll(n-1); val += solve(1LL<<msb, x, pref); val += solve(min(n, 1+pref[msb]/x)-(1LL<<msb), x, pref); memo[n] = val; return val; } ll count_tastiness(ll x, vector<ll> a) { memo.clear(); vector<ll> pref(mxk); a.resize(mxk, 0); for(int i = 0; i < mxk; i++) { pref[i] = (1LL<<i)*a[i]+(i?pref[i-1]:0); } ll ans = solve(1LL<<mxk, x, pref); return ans; }
#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...