# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
480793 | minhcool | cmp (balkan11_cmp) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "cmp.h"
#define set_bit bit_set
#define get_bit bit_get
void remember(int n) {
//edit this
set_bit(1 + ((n >> 10) & 3));
set_bit(5 + ((n >> 8) & 15));
set_bit(21 + ((n >> 6) & 63));
set_bit(85 + ((n >> 4) & 255));
set_bit(341 + ((n >> 2) & 1023));
set_bit(1365 + (n & 4095));
}
int compare(int b) {
//edit this
int l = 1, r = 6;
while(l < r){
int mid = (l + r) >> 1;
int pw = 1, sum = 0;
for(int i = 1; i <= mid; i++){
sum += pw;
pw *= 4;
}
int temp = (b >> (12 - 2 * mid)) & (pw - 1);
if(!get_bit(sum + temp)) l = mid + 1;
else r = mid;
}
int tempor = (b >> (12 - 2 * mid)) & 3;
if(tempor >= 2){
for(int i = tempor + 1; i <= 3; i++){
b += (1LL << (12 - 2 * mid));
int sum = 0, pw = 1;
for(int i = 1; i <= l; i++){
sum += pw;
pw *= 4;
}
int temp = (b >> (12 - 2 * l)) & (pw - 1);
if(get_bit(sum + temp)) return -1;
}
return 0;
}
else{
for(int i = tempor - 1; i >= 0; i--){
b -= (1LL << (12 - 2 * mid));
int sum = 0, pw = 1;
for(int i = 1; i <= l; i++){
sum += pw;
pw *= 4;
}
int temp = (b >> (12 - 2 * l)) & (pw - 1);
if(get_bit(sum + temp)) return 1;
}
return 0;
}
//return 0;
}