Submission #52616

#TimeUsernameProblemLanguageResultExecution timeMemory
52616someone_aacmp (balkan11_cmp)C++17
73 / 100
1988 ms96120 KiB
#include "cmp.h" #include <vector> using namespace std; void remember(int n) { int node = 0; int li=0, ri=4095; 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); } } int compare(int b) { int li=0, ri=4095; int node = 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; } } if(index == 1) { if(bit_get(node*4+1)) { li = li + (index-1)*sz; ri = li + sz - 1; node = node * 4 + 1; } else return -1; } else if(index == 2) { if(bit_get(node*4+2)) { li = li + (index-1)*sz; ri = li + sz - 1; node = node * 4 + 2; } else { if(bit_get(node*4+1)) return 1; else return -1; } } else if(index == 3) { if(bit_get(node*4+3)) { li = li + (index-1)*sz; ri = li + sz - 1; node = node * 4 + 3; } else { if(bit_get(node*4+4)) return -1; else return 1; } } else if(index == 4) { if(bit_get(node*4+4)) { li = li + (index-1)*sz; ri = li + sz - 1; node = node * 4 + 4; } else return 1; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...