Submission #303431

#TimeUsernameProblemLanguageResultExecution timeMemory
303431qiangbaoPacking Biscuits (IOI20_biscuits)C++14
100 / 100
20 ms896 KiB
#include <iostream>
#include <vector>
#include "biscuits.h"

using namespace std;

typedef long long ll;

ll ways[63];
ll ct[63];

ll pow2[63];

ll count_tastiness(ll x, vector<ll> a)
{
    ll tot=0;
    ll i, j;
    pow2[0]=ways[0]=1;
    for(i=1;i<=62;i++)
        pow2[i]=pow2[i-1]*2;
    a.resize(64);
    
    for(i=0;i<62;i++){
        ll way=0;
        tot+=a[i]*pow2[i], ct[i]=tot;
        ll tot2=tot;
        for(j=i;j>=0;j--){
            tot2=min(tot2, ct[j]);
            if(pow2[62]/x>=pow2[j] && tot2>=x*pow2[j])
                tot2-=x*pow2[j], way+=ways[j];
        }
        ways[i+1]=way+1;
    }
    
    return ways[62];
}
#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...