#include "cmp.h"
#include <iostream>
#include <string>
using namespace std;
int cum[13];
void remember(int a) {
for (int i = 1; i < 13; i++) {
cum[i] = cum[i-1] + (1 << 13-i);
}
for (int i = 0; i < 12; i++) {
bit_set(cum[i] + (a >> i) + 1);
}
}
int compare(int b) {
if (bit_get(b+1)) return 0;
short l = 0, r = 12;
while (l+1 < r) {
short mid = l + (r-l)/2;
if (bit_get(cum[mid] + (b >> mid) + 1)) {
r = mid;
// cout<<"IF WE SHIFT BY " << mid<< " A = B\n";
} else {
l = mid;
// cout<<"IF WE SHIFT BY " << mid<< " A ≠ B\n";
}
}
// cout<<l<<' '<<r<<'\n';
b >>= l;
return b & 1 ? 1 : -1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |