#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
long long p[64];
long long n, k, cnt[64], has[64];
int take[64];
int solve(int val)
{
// cout << val << endl;
for (int i = 0; i < 30; ++ i)
has[i] = cnt[i];
for (int i = 0; i < 30; ++ i)
{
if(val & p[i])take[i] = n;
else take[i] = 0;
}
for (int i = 0; i < 30; ++ i)
{
if(has[i] < take[i])return 0;
has[i] -= take[i];
has[i+1] += has[i]/2;
}
return 1;
}
long long count_tastiness(long long x, std::vector<long long> a)
{
k = a.size();
n = x;
long long sum = 0, val = 1;
for (int i = 0; i < k; ++ i)
{
sum += val * a[i];
cnt[i] = a[i];
val *= 2;
}
// cout << sum << endl;
p[0] = 1;
for (int i = 1; i <= 20; ++ i)
p[i] = p[i-1] * 2;
long long ans = 1;
//cout << sum << endl;
for (int i = 1; i <= sum; ++ i)
{
if(i * x > sum)break;
// cout << "trying " << i << endl;
ans += solve(i);
}
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... |