Submission #1357535

#TimeUsernameProblemLanguageResultExecution timeMemory
1357535opeleklanosPacking Biscuits (IOI20_biscuits)C++20
0 / 100
1100 ms153376 KiB
#include <iostream>
#include <vector>
#include <map>
using namespace std;

#define ll long long

vector<ll> a;
map<pair<int, int>, int> dp;

// ll lastIndx = 0;

ll solve(ll ind, ll inInd, ll x){
    if(ind > 148) return 1;
    if(dp[{ind, inInd}] != 0) 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){
    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 + 15, -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...