Submission #749071

#TimeUsernameProblemLanguageResultExecution timeMemory
749071DJeniUpPacking Biscuits (IOI20_biscuits)C++17
21 / 100
1084 ms21196 KiB
#include "biscuits.h"
#include "bits/stdc++.h"
#pragma GCC optimize("O3")
 
using namespace std;
 
typedef long long ll;
 
map<ll,ll>m[67];
ll k,n,d[67];
 
ll S(ll x,ll y){
    if(x>=60 && y<n)return 1;
    y+=d[x];
    if(y/n<1)return S(x+1,y/2);
    //cout<<"! "<<x<<" "<<y<<endl;
    if(m[x][y]!=0)return m[x][y];
    m[x][y]+=S(x+1,y/2);
    if(y>=n)m[x][y]+=S(x+1,(y-n)/2);
    //cout<<x<<" "<<y<<" "<<m[x][y]<<endl;
    return m[x][y];
}
 
long long count_tastiness(long long x, std::vector<long long> a) {
    k=a.size();
    n=x;
    for(int i=0;i<=65;i++){
        m[i].clear();
        d[i]=0;
    }
    for(int i=0;i<k;i++){
        d[i]+=a[i];
        
    }
    for(int i=0;i<=60;i++){
        if(d[i]>n*2 && d[i]%2==0){
            d[i+1]+=(d[i]-2*n)/2;
            d[i]=2*n;
        }
        if(d[i]>0)k=i;
    }
    //cout<<"! "<<S(0,0)<<endl;
    return S(0,0);
}
#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...