제출 #1230514

#제출 시각아이디문제언어결과실행 시간메모리
1230514Hamed_Ghaffari비스킷 담기 (IOI20_biscuits)C++20
100 / 100
19 ms840 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define SZ(x) int(x.size())

const int MXN = 60;

unordered_map<ll, ll> dp;
ll x;
ll s[MXN];

ll DP(ll n) {
    if(n<=1) return n==1;
    if(dp.find(n)!=dp.end()) return dp[n];
    int i = __lg(n-1);
    return dp[n] = DP(1ll<<i) + DP(min(n, s[i]/x+1)-(1ll<<i));
}

ll count_tastiness(ll x, vector<ll> a) {
    ::x = x;
    s[0] = a[0];
    for(int i=1; i<SZ(a); i++)
        s[i] = s[i-1] + (a[i]<<i);
    for(int i=SZ(a); i<60; i++) s[i] = s[i-1];
    dp.clear();
    return DP(1ll<<60);
}
#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...