Submission #1032624

#TimeUsernameProblemLanguageResultExecution timeMemory
103262412345678Packing Biscuits (IOI20_biscuits)C++17
12 / 100
1 ms604 KiB
#include "biscuits.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long

ll n=70, dp[3][70];

long long count_tastiness(long long x, std::vector<long long> a) {
    ll k=a.size();
    vector<ll> cnt(70);
    for (int i=0; i<k; i++) cnt[i]=a[i];
    for (int i=0; i<70; i++) dp[0][i]=dp[1][i]=dp[2][i]=0;
    for (int i=0; i<70; i++) if (cnt[i]>2) cnt[i+1]+=(cnt[i]-1)/2, cnt[i]-=2*((cnt[i]-1)/2);
    //for (int i=0; i<10; i++) cout<<i<<' '<<cnt[i]<<'\n';
    for (int i=0; i<70; i++)
    {
        if (i==0) for (int j=0; j<=cnt[i]; j++) dp[j][i]=1;
        else
        {
            if (cnt[i]==0) dp[0][i]=dp[0][i-1]+dp[1][i-1]+dp[2][i-1];
            else if (cnt[i]==1) dp[0][i]=dp[0][i-1]+dp[1][i-1], dp[1][i]=dp[0][i-1]+dp[1][i-1], dp[2][i]=dp[2][i-1];
            else dp[0][i]=dp[0][i-1]+dp[1][i-1], dp[1][i]=dp[0][i-1]+dp[1][i-1], dp[2][i]=dp[0][i-1]+dp[1][i-1]+dp[2][i-1];
        }
        //cout<<"debug "<<i<<' '<<dp[0][i]<<' '<<dp[1][i]<<' '<<dp[2][i]<<'\n';
    }
    return dp[0][69]+dp[1][69]+dp[2][69];
}

#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...