제출 #749051

#제출 시각아이디문제언어결과실행 시간메모리
749051DJeniUp비스킷 담기 (IOI20_biscuits)C++17
0 / 100
3 ms340 KiB
#include "biscuits.h"
#include "bits/stdc++.h"
#pragma GCC optimize("O3")

using namespace std;

typedef long long ll;
#define pb push_back

map<ll,ll>m[67];
ll k,n,d[67],f[67];

ll S(ll x,ll y){
    if(x>=k && y<n)return 1;
    y+=d[x];
    if(y<n)return S(x+1,y/2+f[x]);
    //cout<<"! "<<x<<" "<<y<<endl;
    if(m[x][y]!=0)return m[x][y];
    m[x][y]+=S(x+1,y/2+f[x]);
    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;
        a.pb(0);
    }
    
    for(int i=0;i<k;i++){
        d[i]=a[i];
        if(d[i]>n){
            d[i+1]+=(d[i]-n)/2;
            f[i]=((d[i]-n)%2)*(n%2);
            d[i]=n;
        }
    }
    //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...