# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
339073 | nandonathaniel | 비교 (balkan11_cmp) | C++14 | 2180 ms | 102380 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cmp.h"
#include "bits/stdc++.h"
using namespace std;
int A[6];
void remember(int n) {
//tambah 1 di depan, supaya bisa dibedain
//partisi 3,2,2,2,2,2
n^=(1<<12);
//yang di set prefixnya
bit_set((n & (7<<10))>>10);
bit_set((n & (31<<8))>>8);
bit_set((n & (127<<6))>>6);
bit_set((n & (511<<4))>>4);
bit_set((n & (2047<<2))>>2);
bit_set(n & 8191);
}
int compare(int a) {
a^=(1<<12);
A[0]=(a & (7<<10))>>10;
A[1]=(a & (31<<8))>>8;
A[2]=(a & (127<<6))>>6;
A[3]=(a & (511<<4))>>4;
A[4]=(a & (2047<<2))>>2;
A[5]=a & 8191;
//cari pertama yang beda
int ki=0,ka=6;
while(ki<ka){
int mid=(ki+ka)/2;
if(bit_get(A[mid])){
ki=mid+1;
}
else ka=mid;
}
if(ki==6){
//sama semua
return 0;
}
int sama;
if(ki==0)sama=4;
else sama=A[ki-1]<<2;
if((A[ki] & 3)==0)return -1;
else if((A[ki] & 3)==1){
if(bit_get(sama))return 1;
else return -1;
}
else if((A[ki] & 3)==2){
if(bit_get(sama^3))return -1;
else return 1;
}
else return 1;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |