#include "biscuits.h"
#define int long long
using namespace std;
const int kmax = 65;
const int ymax = 1e5;
vector<int> getBinary(int n){
vector<int> bin(kmax);
int k = 0;
while (n > 0){
if (n % 2) bin[k] = 1;
k++;
n /= 2;
}
return bin;
}
bool possible(int x, int y, vector<int> avail){
vector<int> bin = getBinary(y);
for (int i = kmax-1; i >= 0; --i) {
if (avail[i] < bin[i] * x) {
if (i != 0) bin[i-1] += bin[i] * 2, avail[i-1] += avail[i] * 2;
continue;
}
avail[i] -= bin[i] * x;
bin[i] = 0;
if (i != 0 && (2 << i) <= x) avail[i-1] += avail[i] * 2;
}
return bin[0] == 0;
}
int count_tastiness(int x, vector<int> a) {
int ans = 0;
vector<int> avail(kmax);
for (int i = a.size()-1; i >= 0; --i) {
avail[i] = a[i];
}
for (int i = 0; i <= ymax; ++i) {
if (possible(x, i, avail)) ans++;
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
321 ms |
324 KB |
Output is correct |
2 |
Incorrect |
442 ms |
280 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
322 ms |
276 KB |
Output is correct |
2 |
Incorrect |
201 ms |
264 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
330 ms |
268 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
1083 ms |
332 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
321 ms |
324 KB |
Output is correct |
2 |
Incorrect |
442 ms |
280 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |