#include <bits/stdc++.h>
#include "biscuits.h"
// #include "grader.cpp"
using namespace std;
typedef long long ll;
map<vector<ll>, ll> memo;
vector<ll> nvec;
ll f(vector<ll> vec){
if (memo.find(vec) != memo.end())
return memo[vec];
ll sz = vec.size();
if (sz == 0)
return memo[vec] = 1;
nvec = vec;
if (vec.back()){
nvec.pop_back();
return memo[vec] = 2 * f(nvec);
}
nvec.pop_back();
vector<ll> prv = vec;
ll tmp = f(nvec);
ll cur = (1ll << (sz - 1));
for (ll i = sz - 2; i >= 0; i --){
if (cur >= (1ll << i) and vec[i]){
ll quo = min(vec[i], cur / (1ll << i));
vec[i] -= quo;
cur -= quo * (1ll << i);
}
}
nvec = vec;
nvec.pop_back();
if (cur == 0) return memo[prv] = tmp + f(nvec);
return memo[prv] = tmp;
}
ll count_tastiness(ll x, vector<ll> a){
ll k = a.size();
ll ans = 1, sm = 0;
for (ll i = 0; i < k; i ++)
sm += a[i] * (1ll << i);
while (a.size() < 59)
a.push_back(0);
for (int i = 0; i + 1 < a.size(); i ++){
if (a[i] < 3) continue;
ll del = (a[i] - 1) / 2;
a[i] -= 2 * del;
a[i + 1] += del;
}
return f(a);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |