#include<bits/stdc++.h>
#include "biscuits.h"
using namespace std;
#define L(i,j,k) for(int i=(j);i<=(k);i++)
#define R(i,j,k) for(int i=(j);i>=(k);i--)
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(),(v).end()
#define ll long long
long long count_tastiness(long long x, std::vector<long long> vec) {
int z=sz(vec);
L(i,0,sz(vec)-1){
if(i==sz(vec)-1 && vec[i]!=0)vec.push_back(0);
if(vec[i]>x){
ll a=vec[i]-x;
vec[i]-=(a/2)*2;
vec[i+1]+=(a/2);
}
}
int k=sz(vec);
vector<ll> preresp(k);
auto dp=[&](auto&& self,int id, ll val)->ll{
if(id==0){
if(val>=x)return (ll)2;
else return (ll)1;
}
if(val>=x){
return 2*preresp[id-1];
}
ll quero=x-val;
R(i,id-1,0){
if(quero>2*x)continue;
quero*=2;
if(quero<=vec[i]){
return preresp[id-1]+self(self,i,vec[i]-quero);
}
quero-=vec[i];
}
return preresp[id-1];
};
L(i,0,k-1){
preresp[i]=dp(dp,i,vec[i]);
}
return preresp[k-1];
}
| # | 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... |