#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;
ll solve(vector<ll> &a) {
ll sum = 0;
forn(i, sz(a)) sum += a[i] << i;
return sum + 1;
}
ll count_tastiness(ll x, vector<ll> a) {
if (x == 1) {
forn(i, sz(a)) {
ll extra = max(a[i] - 1, 0LL) / 2;
a[i] -= 2 * extra;
if (i + 1 == sz(a)) a.pb(0LL);
a[i + 1] += extra;
}
ll ret = 1;
vector<ll> c;
forn(i, sz(a)) {
if (c[i] == 0) {
ret *= solve(c);
c.clear();
} else {
c.pb(a[i]);
}
}
ret *= solve(c);
return ret;
}
ll sum = 0;
forn(i, sz(a)) sum += a[i] << i;
ll ret = 1;
for (ll y = 1; y * x <= sum; y++) {
vector<ll> c = a;
ll need = x;
while (need) {
ll curr = y;
dforn(i, sz(a)) {
ll cnt = min(c[i], curr >> i);
c[i] -= cnt, curr -= cnt << i;
}
if (curr == 0) need--;
else break;
}
if (need == 0) ret++;
}
return ret;
}
# | 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... |