#include "cmp.h"
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<ll, null_type, less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update>
#define endl '\n'
using ll = long long;
#define pb push_back
#define pF first
#define pS second
#define SP <<' '<<
#define all(x) (x).begin(), (x).end()
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
void bit_set(int addr);
int bit_get(int addr);
struct base8{
int d3, d2, d1, d0;
};
base8 makebase8(int n) {
base8 x;
int p3 = 8*8*8, p2 = 8*8, p1 = 8, p0 = 1;
for (int j=3; j>=0; j--) {
ll p;
int* y;
if (j == 3) {
p = p3;
y = &x.d3;
}
else if (j == 2) {
p = p2;
y = &x.d2;
}
else if (j == 1) {
p = p1;
y = &x.d1;
}
else {
p = p0;
y = &x.d0;
}
for (int i = 7; i >= 0; i--) {
if (p * i <= n) {
*y = i;
n -= p * i;
break;
}
}
}
return x;
}
void remember(int n) {
// 1-8 first digit, 9-16 second digit, 17-24 third digit, 25-32 last digit
base8 x = makebase8(n);
bit_set(x.d3+1);
bit_set(x.d2+9);
bit_set(x.d1+17);
bit_set(x.d0+25);
}
int compare(int b) {
base8 x = makebase8(b);
if (bit_get(x.d3+1)) {
if (bit_get(x.d2+9)) {
if (bit_get(x.d1+17)) {
if (bit_get(x.d0+25)) {
return 0;
}
else {
if(x.d0 <= 3) {
for (int i=x.d0-1; i>=0; i--) if (bit_get(i+25)) return 1;
return -1;
}
else {
for (int i=x.d0+1; i<=7; i++) if (bit_get(i+25)) return -1;
return 1;
}
}
}
else {
if(x.d1 <= 3) {
for (int i=x.d1-1; i>=0; i--) if (bit_get(i+17)) return 1;
return -1;
}
else {
for (int i=x.d1+1; i<=7; i++) if (bit_get(i+17)) return -1;
return 1;
}
}
}
else {
if(x.d2 <= 3) {
for (int i=x.d2-1; i>=0; i--) if (bit_get(i+9)) return 1;
return -1;
}
else {
for (int i=x.d2+1; i<=7; i++) if (bit_get(i+9)) return -1;
return 1;
}
}
}
else {
if(x.d3 <= 3) {
for (int i=x.d3-1; i>=0; i--) if (bit_get(i+1)) return 1;
return -1;
}
else {
for (int i=x.d3+1; i<=7; i++) if (bit_get(i+1)) return -1;
return 1;
}
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |