# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
52619 | 2018-06-26T09:44:48 Z | someone_aa | 비교 (balkan11_cmp) | C++17 | 1200 ms | 96248 KB |
#include "cmp.h" #include <vector> using namespace std; void remember(int n) { int node = 0; int li=0, ri=4095; //cout<<0<<" "; while(li < ri) { int sz = ri - li + 1; sz = sz / 4; int st[4], fh[4]; for(int i=0;i<4;i++) { st[i] = li + i*sz; fh[i] = st[i] + sz - 1; if(st[i] <= n && n <= fh[i]) { node = node * 4 + (i+1); li = st[i]; ri = fh[i]; } } bit_set(node); //cout<<node<<" "; } //cout<<"\n"; } int compare(int b) { int li=0, ri=4095; int node = 0; vector<int>v; v.push_back(0); while(li < ri) { int sz = ri - li + 1; sz = sz / 4; int st[4], fh[4]; int index = 0; for(int i=0;i<4;i++) { st[i] = li + i*sz; fh[i] = st[i] + sz - 1; if(st[i] <= b && b <= fh[i]) { index = i + 1; } } node = node * 4 + index; li = li + (index-1)*sz; ri = li + sz - 1; v.push_back(node); } li = 0, ri = v.size() - 1; int f = -1; while(li <= ri) { int mid = (li+ri)/2; bool check = false; if(v[mid] == 0) check = false; else check = bit_get(v[mid]); if(check) { f = mid; li = mid + 1; } else ri = mid - 1; } if(f == v.size()-1) return 0; else { int myind; if(v[f]*4+1 == v[f+1]) myind = 1; else if(v[f]*4+2 == v[f+1]) myind = 2; else if(v[f]*4+3 == v[f+1]) myind = 3; else if(v[f]*4+4 == v[f+1]) myind = 4; if(myind == 1) return -1; else if(myind == 2) { if(bit_get(v[f]*4+1)) return 1; else return -1; } else if(myind == 3) { if(bit_get(v[f]*4+4)) return -1; else return 1; } else if(myind == 4) return 1; } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1200 ms | 96248 KB | ZERO POINTS: For a=3069 and b=1532, correct answer is -1, got 1 |