# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1247347 | MateiKing80 | 비교 (balkan11_cmp) | C++20 | 0 ms | 0 KiB |
#include "cmp.h"
#include <bits/stdc++.h>
int gib(int x, int bit) {
if (x & (1 << bit))
return 1;
return 0;
}
void remember(int a) {
bit_set(69 + (a & ((1 << 12) - (1 << 6))));
for (int i = 0; i < 6; i ++) {
int x = i * 4 + 1 + gib(a, 2 * i) + 2 * gib(a, 2 * i + 1);
bit_set(x);
}
}
int compare(int b) {
if (bit_set(69 + (b & ((1 << 12) - (1 << 6)))) {
for (int i = 2; i >= 0; i --) {
int x = i * 4 + 1 + gib(b, 2 * i) + 2 * gib(b, 2 * i + 1);
if (bit_get(x))
continue;
if (bit_get(i * 4 + 1 + gib(b, 2 * i) + 2 * (1 - gib(b, 2 * i + 1))) || bit_get(i * 4 + 1 + (1 - gib(b, 2 * i)) + 2 * (1 - gib(b, 2 * i + 1)))) {
if (gib(b, 2 * i + 1))
return 1;
return -1;
}
if (gib(b, 2 * i))
return 1;
return -1;
}
} else {
for (int i = 5; i >= 3; i --) {
int x = i * 4 + 1 + gib(b, 2 * i) + 2 * gib(b, 2 * i + 1);
if (bit_get(x))
continue;
if (bit_get(i * 4 + 1 + gib(b, 2 * i) + 2 * (1 - gib(b, 2 * i + 1))) || bit_get(i * 4 + 1 + (1 - gib(b, 2 * i)) + 2 * (1 - gib(b, 2 * i + 1)))) {
if (gib(b, 2 * i + 1))
return 1;
return -1;
}
if (gib(b, 2 * i))
return 1;
return -1;
}
}
return 0;
}