Submission #1357515

#TimeUsernameProblemLanguageResultExecution timeMemory
1357515opeleklanosPacking Biscuits (IOI20_biscuits)C++20
0 / 100
1014 ms2162688 KiB
#include <iostream>
#include <vector>
using namespace std;

#define ll long long

vector<ll> a;
vector<vector<ll>> dp;

ll lastIndx = 0;

ll solve(ll ind, ll inInd, ll x){
    if(ind > 148) return 1;
    if(dp[ind][inInd] != -1) return dp[ind][inInd];

    ll ans = 0;
    ans += solve(ind+1, (inInd/2) + a[ind+1], x);
    if(inInd>=x) ans += solve(ind+1, (inInd-x)/2 + a[ind+1], x);
    dp[ind][inInd] = ans;
    return dp[ind][inInd];
}

ll count_tastiness(ll x, vector<ll> A){
    // vector<ll> a;
    a.assign(150, 0);
    for(ll i = 0; i<A.size(); i++) a[i] = A[i];
    for(ll i = 0; i<a.size()-1; i++){
        if((a[i]>=x) && ((a[i] - x) % 2) == 0){
            ll k = ((a[i]-x)/2);
            a[i+1] += k;
            a[i] -= 2*k;
        }
        else if(a[i] >= x){
            ll k = ((a[i]-x-1)/2);
            a[i+1] += k;
            a[i] -= 2*k;
        }

        if(a[i] != 0) lastIndx = i;
    }

    dp.assign(150, vector<ll>(3*x, -1));
    
    return solve(0, a[0], x);
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...