Submission #1022194

#TimeUsernameProblemLanguageResultExecution timeMemory
1022194JakobZorzPacking Biscuits (IOI20_biscuits)C++17
42 / 100
1095 ms64012 KiB
#include"biscuits.h"
#include<unordered_map>
typedef long long ll;
using namespace std;

ll x;
ll coins[120];
unordered_map<ll,ll>dp[120];

ll count(int i,ll num){
    if(i==120)
        return 1;
    if(dp[i].count(num))
        return dp[i][num];
    ll res=0;
    if(num>=x){
        res+=count(i+1,coins[i+1]+(num-x)/2);
    }
    res+=count(i+1,coins[i+1]+num/2);
    dp[i][num]=res;
    return res;
}

ll count_tastiness(ll X,vector<ll>a){
    x=X;
    for(int i=0;i<120;i++){
        coins[i]=0;
        dp[i].clear();
    }
    for(int i=0;i<(int)a.size();i++)
        coins[i]=a[i];
    
    for(int i=0;i<120;i++){
        ll num=(coins[i]-x)/2;
        if(num>0){
            coins[i+1]+=num;
            coins[i]-=2*num;
        }
    }
    
	return count(0,coins[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...