Submission #339073

#TimeUsernameProblemLanguageResultExecution timeMemory
339073nandonathanielcmp (balkan11_cmp)C++14
100 / 100
2180 ms102380 KiB
#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 timeMemoryGrader output
Fetching results...