Submission #1290061

#TimeUsernameProblemLanguageResultExecution timeMemory
1290061mariaclaraPacking Biscuits (IOI20_biscuits)C++17
0 / 100
1 ms572 KiB
#include "biscuits.h"
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
#define sz(x) (int)x.size()
#define pb push_back

ll x, s[61], dp[61];

ll solve(ll n, int b) { 
    if(n == 1) return 1;
    if(n < 1) return 0;
    // 2^b < n <= 2^(b+1)
    while((1<<b) >= n) b--;
    return dp[b] + solve(min(n, s[b]/x + 1) - (1<<b), b);
}

ll count_tastiness(ll X, vector<ll> a) {
    x = X;
    s[0] = a[0];
    dp[0] = 1;

    for(ll i = 1, pot = 2; i <= 4; i++, pot *= 2) {
        s[i] = s[i-1];
        if(i < sz(a)) s[i] += pot * a[i];
    }

    for(int i = 1; i <= 4; i++)
        dp[i] = solve(1<<i, i-1);

    return dp[4];
}
#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...