# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
52612 | 2018-06-26T09:00:23 Z | someone_aa | 비교 (balkan11_cmp) | C++17 | 1072 ms | 104988 KB |
#include "cmp.h" #include <vector> using namespace std; void remember(int n) { int node = 1; for(int i=11;i>=0;i--) { if(node != 1) bit_set(node); //bit[node] = true; if(n&(1<<i)) node = 2 * node + 1; else node = 2 * node; } //bit[node] = true; bit_set(node); } int compare(int b) { //edit this int node = 1; vector<int>nodes; for(int i=11;i>=0;i--) { nodes.push_back(node); if(b&(1<<i)) node = 2 * node + 1; else node = 2 * node; } nodes.push_back(node); int li = 0, ri = nodes.size()-1; int f = -1; while(li <= ri) { int mid = (li+ri)/2; bool check = false; if(mid == 1) check = true; else check = bit_get(nodes[mid]); if(check) { li = mid + 1; f = mid; } else ri = mid - 1; } if(f == nodes.size() -1) return 0; else { if(nodes[f] * 2 == nodes[f+1]) return -1; else return 1; } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1072 ms | 104988 KB | ZERO POINTS: For a=3069 and b=1532, correct answer is -1, got 1 |