# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
26794 | baactree | 비교 (balkan11_cmp) | C++14 | 2898 ms | 90948 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cmp.h"
//4+3+3=10
void remember(int n) {
int ri=10240;
bit_set(ri-n);
ri-=4096;
bit_set(ri-n/64);
ri-=64;
int a,b;
a=n/64;
bit_set(ri-a/8);
ri-=8;
b=n%64;
bit_set(ri-b/8);
}
int compare(int b) {
//일치하는 경우 제외
int ri=10240;
if(bit_get(ri-b))
return 0;
ri-=4096;
int k=b/64;
//일치함 따라서 뒤 6비트 봐야함
if(bit_get(ri-k)){
ri-=64;
ri-=8;
int p=b%64;
//일치함 뒤 3비트로 확인해야함 3번 구간
if(bit_get(ri-p/8)){
int r=0;
int t=7<<r;
int q=(b&t)>>r;
int w=b&(~t);
if(q<4){
//0 1 2
for(int i=0;i<q;i++){
int now=w+(i<<r);
if(bit_get(10240-now))
return 1;
}
return -1;
}
else{
//5 6 7
for(int i=q+1;i<8;i++){
int now=w+(i<<r);
if(bit_get(10240-now))
return -1;
}
return 1;
}
}
//불일치함 앞 3비트로 확인해야함 2번 구간
else{
int r=3;
int t=7<<r;
int q=(b&t)>>r;
int w=b&(~t);
if(q<4){
//0 1 2
for(int i=0;i<q;i++){
int now=i;
if(bit_get(10240-4096-64-8-now))
return 1;
}
return -1;
}
else{
//5 6 7
for(int i=q+1;i<8;i++){
int now=i;
if(bit_get(10240-4096-64-8-now))
return -1;
}
return 1;
}
}
}
//불일치함 따라서 앞 6비트 봐야함
else{
ri-=64;
int p=b/64;
//일치함 뒤 3비트로 확인해야함 1번 구간
if(bit_get(ri-p/8)){
int r=0;
int t=7<<r;
int q=(p&t)>>r;
int w=p&(~t);
if(q<4){
//0 1 2
for(int i=0;i<q;i++){
int now=w+(i<<r);
if(bit_get(10240-4096-now))
return 1;
}
return -1;
}
else{
//5 6 7
for(int i=q+1;i<8;i++){
int now=w+(i<<r);
if(bit_get(10240-4096-now))
return -1;
}
return 1;
}
}
//불일치함 앞 3비트로 확인해야함 0번 구간
else{
int r=9;
int t=7<<r;
int q=(b&t)>>r;
int w=b&(~t);
if(q<4){
//0 1 2
for(int i=0;i<q;i++){
int now=i;
if(bit_get(10240-4096-64-now))
return 1;
}
return -1;
}
else{
//5 6 7
for(int i=q+1;i<8;i++){
int now=i;
if(bit_get(10240-4096-64-now))
return -1;
}
return 1;
}
}
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |