#include "biscuits.h"
#include "bits/stdc++.h"
using namespace std;
#define vec vector
#define int long long
#define all(x) (x).begin(), (x).end()
const int BITS = 64;
vec<vec<int>> split(const vec<int> &a, int k) {
vec<vec<int>> splits = {{}};
for (int x: a) {
if (x == k) splits.push_back({});
else splits.back().push_back(x);
}
vec<vec<int>> tmp;
for (auto x: splits) if (x.size()) tmp.push_back(x);
return tmp;
}
template<typename T>
void print(T x) {
cerr << x << " ";
}
template<typename T>
void print(vec<T> a) {
for (T x: a) print(x);
cerr << endl;
}
int just_pow(int k) {
int x = 1;
while (k--) x *= 2;
return x;
}
int count_tastiness(int x, vec<int> a) {
assert(x == 1);
while (a.size() < BITS) a.push_back(0);
for (int i = 0; i < BITS - 1; i++) {
if (a[i] % 2 == 1) a[i + 1] += a[i] / 2, a[i] = 1;
else if (a[i] >= 2) a[i + 1] += ((a[i] - 2) / 2), a[i] = 2;
}
int ans = 1;
auto splits = split(a, 0);
for (auto s: splits) {
// print(s);
if (count(all(s), 2) == 0) {
ans *= just_pow(s.size());
continue;
}
int tmp = just_pow(s.size());
for (int i = 0; i < s.size(); i++) {
if (s[i] == 2) {
tmp += just_pow(i);
}
}
ans *= tmp;
}
return ans;
}
# | 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... |