#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
long long p[64],h[64];
long long dp[64];
long long f[64];
long long count_tastiness(long long x, std::vector<long long> a)
{
    p[0]=1;
    for(long long i=1;i<a.size();i++)
        p[i]=p[i-1]*2;
    dp[a.size()-1]=a[a.size()-1];
    f[a.size()-1]=1;
    for(int i=a.size()-2;i>=0;i--)
    {
        dp[i]=min(a[i], 1LL*2)*f[i+1];
        if(a[i]==0)f[i]=1;
        for(int j=1;j<=a.size();j++)
        {
            long long rt=min(a[i]-1,p[j]-1);
            long long lf=p[j-1];
            if(j==1)lf--;
            if(lf>a[i])break;
            if(i+j==a.size())
            {
                dp[i]+=(a[i]-p[j-1]);
                f[i]=1;
                break;
            }
            dp[i]+=(dp[i+j])*(rt-lf+1);
            if(p[j]-1>=a[i])
            {
                f[i]=dp[i+j]+f[i+j];
                break;
            }
        }
        //cout<<i<<" "<<dp[i]<<" "<<f[i]<<endl;
    }
        //cout<<sum/x<<endl;
	return dp[0]+f[0];
}
| # | 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... |