# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
52622 | 2018-06-26T09:46:57 Z | someone_aa | cmp (balkan11_cmp) | C++17 | 7064 ms | 96088 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 = 0; 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
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 7064 ms | 96088 KB | Output is correct - maxAccess = 10, score = 100 |