Submission #698972

#TimeUsernameProblemLanguageResultExecution timeMemory
698972sharaelongPacking Biscuits (IOI20_biscuits)C++17
100 / 100
129 ms1324 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; const int MAX_N = 60; ll f[MAX_N]; map<pair<int, ll>, ll> dp; ll solve(int i, ll j) { if (j < 0) return 0; if (i == 0) return (j == 0 ? 1 : (f[i] == 0 ? 1 : 2)); if (dp.find({ i, j }) == dp.end()) dp[{i, j}] = -1; ll& ret = dp[{i,j}]; if (ret != -1) return ret; ret = solve(i-1, min({ j, (1ll << i)-1, f[i] })) + solve(i-1, min({ j-(1ll << i), (1ll << i)-1, f[i]-(1ll << i) })); return ret; } ll count_tastiness(ll x, vector<ll> a) { for (int i=0; i<MAX_N; ++i) { ll sum = 0; for (int j=0; j<min(i+1, (int)a.size()); ++j) sum += a[j] * (1ll << j); f[i] = sum / x; } dp.clear(); ll ret = solve(MAX_N-1, (1ll << MAX_N)-1); return ret; }
#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...