#include "cmp.h"
#include <iostream>
#include <string>
using namespace std;
int cum[7];
string quat(int n) {
string s(6, '0');
for (int i = 0; i < 6; i++)
s[i] += (n >> i*2) & 3;
reverse(s.begin(), s.end());
return s;
}
void remember(int a) {
cum[0] = 1;
for (int i = 1; i < 7; i++) {
cum[i] = cum[i-1] + (1 << (14 - 2*i));
}
for (int i = 0; i < 7; i++) {
bit_set(cum[i] + (a >> i*2));
cout << quat((a >> i*2)) << '\n';
}
cout<<'\n';
}
int compare(int b) {
cout<<quat(b)<<'\n';
auto check = [&](int i) {
return bit_get(cum[i] + (b >> i*2));
};
for (int i = 6; i >= 0; i--) if (!check(i)) {
b >>= 2*i;
if (b % 4 == 0) return -1;
if (b % 4 == 1) return bit_get(b + cum[i] - 1) ? 1 : -1;
if (b % 4 == 2) return bit_get(b + cum[i] + 1) ? -1 : 1;
if (b % 4 == 3) return 1;
}
return 0;
// short l = 0, r = 7;
// while (l+1 < r) {
// short mid = (l+r)/2;
// cout << mid << ' ' << quat((b >> mid*2)) << ' '<< bit_get(cum[mid] + (b >> mid*2))<< '\n';
// if (bit_get(cum[mid] + (b >> mid*2))) {
// r = mid;
// } else {
// l = mid;
// }
// }
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |