#include<bits/stdc++.h>
#include "cmp.h"
using namespace std;
typedef long long ll;
//const int mn = 1e5 + 5;
ll p[5] = {0,
(1 << 3),
(1 << 3) + (1 << 6),
(1 << 3) + (1 << 6) + (1 << 9)};
//ll wow[mn];
//void bit_set(ll a){
//// assert(wow[a] == 0);
// cout << "set " << a << "\n";
// wow[a] = 1;
//}
//
//ll bit_get(ll a){
// cout << "get " << a << "\n";
// return wow[a];
//}
ll hehe(ll a, ll k){
// cout << (9 - (k - (k % 3))) << "\n";
return a - (a % (1 << k)) + p[(9 - (k - (k % 3))) / 3];
}
ll haha(ll a, ll k){
return bit_get(hehe(a, k));
}
void remember(int a){
for(int i = 9; i >= 0; i -= 3){
bit_set(hehe(a, i));
}
}
int compare(int b){
if(!haha(b, 3)){
if(haha(b, 6)){
if(haha(b ^ (1 << 3), 3)){
if(b > (b ^ (1 << 3))) return 1;
return -1;
}
if(haha(b ^ (1 << 4), 4)){
if(b > (b ^ (1 << 4))) return 1;
return -1;
}
if(haha(b ^ (1 << 4) ^ (1 << 3), 4)){
if(b > (b ^ (1 << 3) ^ (1 << 4))) return 1;
return -1;
}
if(b > (b ^ (1 << 5))) return 1;
return -1;
}
if(haha(b, 9)){
if(haha(b ^ (1 << 6), 6)){
if(b > (b ^ (1 << 6))) return 1;
return -1;
}
if(haha(b ^ (1 << 7), 7)){
if(b > (b ^ (1 << 7))) return 1;
return -1;
}
if(haha(b ^ (1 << 7) ^ (1 << 6), 7)){
if(b > (b ^ (1 << 6) ^ (1 << 7))) return 1;
return -1;
}
if(b > (b ^ (1 << 8))) return 1;
return -1;
} else {
if(haha(b ^ (1 << 9), 9)){
if(b > (b ^ (1 << 9))) return 1;
return -1;
}
if(haha(b ^ (1 << 10), 10)){
if(b > (b ^ (1 << 10))) return 1;
return -1;
}
if(haha(b ^ (1 << 10) ^ (1 << 9), 10)){
if(b > (b ^ (1 << 10) ^ (1 << 9))) return 1;
return -1;
}
if(b > (b ^ (1 << 11))) return 1;
return -1;
}
} else {
if(!haha(b, 0)){
if(haha(b ^ (1 << 0), 0)){
if(b > (b ^ (1 << 0))) return 1;
return -1;
}
if(haha(b ^ (1 << 1), 1)){
if(b > (b ^ (1 << 1))) return 1;
return -1;
}
if(haha(b ^ (1 << 1) ^ (1 << 0), 1)){
if(b > (b ^ (1 << 0) ^ (1 << 1))) return 1;
return -1;
}
if(b > (b ^ (1 << 2))) return 1;
return -1;
} else {
return 0;
}
}
}
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//
//int main(){
// ios_base::sync_with_stdio(false);
// cin.tie(NULL);
// if(fopen(".INP", "r")) {
// freopen(".INP", "r", stdin);
// freopen(".OUT", "w", stdout);
// }
// int testCase = 1;
// //cin >> testCase;
// while(testCase--){
// ll a = rng() % 8, b = rng() % 8;
// remember(a);
//// compare(b);
// cout << a << " " << b << " " << compare(b);
// }
//}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |