#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
#define forsn(i, s, n) for (int i = int(s); i < int(n); i++)
#define forn(i, n) forsn(i, 0, n)
#define dforsn(i, s, n) for (int i = int(n) - 1; i >= int(s); i--)
#define dforn(i, n) dforsn(i, 0, n)
#define all(x) begin(x), end(x)
#define sz(x) int(x.size())
#define pb push_back
#define eb emplace_back
using ll = long long;
const int K = 60;
ll count_tastiness(ll x, vector<ll> a) {
forn(i, sz(a)) if (a[i] - x >= 2) {
ll extra = (a[i] - x) / 2;
assert(extra >= 1);
a[i] -= 2 * extra;
if (i + 1 == sz(a)) a.pb(0LL);
a[i + 1] += extra;
}
a.resize(K, 0);
if (x <= 10000) {
vector<vector<ll>> dp(K + 1, vector<ll>(x + 2, 0));
dp[sz(a)] = vector<ll>(x + 2, 1);
dforn(i, K) forn(j, x + 2) {
dp[i][j] = dp[i + 1][(j + a[i]) / 2];
if (j + a[i] >= x) dp[i][j] += dp[i + 1][(j + a[i] - x) / 2];
}
return dp[0][0];
}
vector<ll> s(K);
forn(i, K) s[i] = a[i] << i;
forn(i, K - 1) s[i + 1] += s[i];
vector<ll> r{0};
forn(i, K) {
int t = sz(r);
forn(j, t) if ((r[j] + (1LL << i)) <= s[i] / x) r.pb(r[j] + (1LL << i));
}
return sz(r);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |