제출 #1270942

#제출 시각아이디문제언어결과실행 시간메모리
1270942AlgorithmWarrior비스킷 담기 (IOI20_biscuits)C++20
0 / 100
2 ms324 KiB
#include "biscuits.h"
#include <bits/stdc++.h>

using namespace std;

long long dp[65];
long long const INF=2e18;

long long count_tastiness(long long x,vector<long long>a){
    int i;
    int nrb=a.size();
    dp[nrb]=1;
    for(i=nrb-1;i>=0;--i){
        dp[i]=0;
        int j;
        for(j=i+1;j<=nrb;++j){
            int k;
            long long scazut=0;
            long long lb=0,ub;
            for(k=j-1;k>i;--k){
                scazut+=a[k]*(1LL<<k);
                long long lbtemp=scazut/x/(1LL<<k)+1;
                if(INF/lbtemp>(1LL<<(k-i)))
                    lbtemp*=(1LL<<(k-i));
                else
                    lbtemp=INF;
                if(lb<lbtemp)
                    lb=lbtemp;
            }
            scazut+=a[i]*(1LL<<i);
            ub=min(scazut/x/(1LL<<i),(1LL<<(j-i))-1);
            if(lb<=ub)
                dp[i]+=dp[j]*(ub-lb+1);
        }
    }
    return dp[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...