# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
39472 | 2018-01-15T16:24:30 Z | smu201111192 | 비교 (balkan11_cmp) | C++14 | 2181 ms | 99656 KB |
#include "cmp.h" void remember(int n){ int a[4]; int pos = 3; if(n == 2888){ int abc=3; } while(pos >= 0){ a[pos--] = (n % 8); n/=8; } int cur = 1; for(int i=0;i<4;i++){ cur = cur * 8 + a[i]; bit_set(cur); } } int compare(int b) { int temp[4]; if(b == 3141){ int abc=3; } int n = b; int a[4]; int pos = 3; while(pos >= 0){ a[pos--] = (n % 8); n/=8; } int cur = 1; int i = -1; int lo = 0; int hi = 3; for(int j=0;j<4;j++){ temp[j] = cur * 8 + a[j]; cur = cur * 8 + a[j]; } while(lo <= hi){ int mid = (lo+hi)/2; int bit = bit_get(temp[mid]); if(bit == 1){ lo = mid + 1; if(mid > i) i = mid; } else{ hi = mid - 1; } } i++; if(i == 4)return 0; cur = temp[i]; cur /= 8; int chk = -1; if(a[i] == 0)return -1; if(a[i] == 7)return 1; if(a[i] <= 3){ for(int k = 0 ; k < a[i]; k ++){ int bit = bit_get(cur * 8 + k); if(bit == 1){ chk = k; break; } } if(chk == -1) return -1; else return 1; } else{ for(int k = a[i] + 1; k <= 7; k++){ int bit = bit_get(cur * 8 + k); if(bit == 1){ chk=k; break; } } if(chk == -1) return 1; else return -1; } return 1; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2181 ms | 99656 KB | Output is correct - maxAccess = 10, score = 100 |