이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
long long S = 0;
int k = 0;
long long b[65];
long long a1[65];
bool boleh1(long long y, long long x){
for(int i = 0; i < k; i ++){
b[i] = a1[i];
}
bool boleh = true;
for(long long i = 0; i < x; i ++){
long long rem = y;
for(int j = k-1; j >= 0; j --){
long long quotient = min(rem>>j, b[j]);
b[j] -= quotient;
rem -= (quotient << j);
}
if(rem != 0){
boleh = false;
break;
}
}
return boleh;
}
bool boleh2(long long y, long long x){
bool boleh = true;
for(int i = 0; i < 60; i ++){
b[i] = a1[i];
}
int lastUnoccupied = k;
for(int i = 59; i >= 0; i --){
if( y&(1LL<<i) ){
long long rem = x<<i;
for(int j = min(i, k-1); j >= 0; j --){
long long quotient = min(rem>>j, b[j]);
b[j] -= quotient;
rem -= (quotient << j);
if(b[j] == 0){
lastUnoccupied = j;
}
if(rem == 0){break;}
}
if(rem != 0){
boleh = false;
break;
}
}
if(!boleh){
break;
}
}
return boleh;
}
long long count_tastiness(long long x, std::vector<long long> a) {
k = (int)a.size();
memset(a1, 0, sizeof(a1));
for(int i = 0; i < k; i ++){
S += (a[i]<<i);
a1[i] = a[i];
}
if(x == 1){
for(int i = 0; i < k; i ++){
b[i] = a[i];
}
long long ans2 = 1;
long long val = 0;
long long mult = 1;
long long divider = 1;
for(int i = 0; i < k; i ++){
val += a[i]*mult;
if(val >= x*(2*mult/divider - 1)*divider ){
}else{
ans2 *= 1+(val/divider);
val = 0;
divider = mult*2;
}
mult <<= 1;
}
ans2 *= 1+(val/divider);
//printf("ans2=%lld\n", ans2);
//assert(ans == ans2);
return ans2;
}
long long ans = 1;
for(long long y = 1; y <= S/x;){
bool boleh = boleh2(y, x);
assert(boleh == boleh1(y, x));
if(boleh){
y ++;
}else{
long long lsb = y&(-y);
y += lsb;
y = y/lsb*lsb;
}
ans += boleh;
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
biscuits.cpp: In function 'bool boleh2(long long int, long long int)':
biscuits.cpp:37:9: warning: variable 'lastUnoccupied' set but not used [-Wunused-but-set-variable]
37 | int lastUnoccupied = k;
| ^~~~~~~~~~~~~~
# | 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... |