Submission #432441

#TimeUsernameProblemLanguageResultExecution timeMemory
432441MOUF_MAHMALATPacking Biscuits (IOI20_biscuits)C++14
0 / 100
13 ms300 KiB
#include "biscuits.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll>a;
ll x,n,dp[65],f[65];
ll best(ll d)
{
    if(d==-1)
        return 1;
    ll &r=dp[d];
    if(r!=-1)
        return r;
    r=best(d-1);
    ll c=0;
    for(ll i=d; i>=0; i--)
    {
        c+=a[i]/f[d-i];
        if(c>=x)
        {
            return r+=best(i-1);
        }
    }
    return r;
}
long long count_tastiness(ll X, vector<ll> A)
{
    x=X,a=A,n=61;
    if(f[0]==0)
    {
        f[0]=1;
        for(ll i=1;i<=60;i++)
            f[i]=f[i-1]*2;
    }
    a.resize(n);
    for(ll i=0; i<n; i++)
    {
        if(a[i]<x)
            continue;
        ll op=(a[i]-x)/2;
        a[i]-=op;
        if(i<n-1)
            a[i+1]+=op;
    }
    memset(dp,-1,sizeof dp);
    return best(n-1);
}
#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...