#include "cmp.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define FOR(i,l,r) for(int i = (l), _r = (r); i <= _r; i++)
#define FORNG(i,r,l) for(int i = (r), _l = (l); i >= _l; i--)
#define REP(i,r) for(int i = 0, _r = (r); i < _r; i++)
#define endl '\n'
#define fi first
#define se second
#define pb push_back
#define size(v) ((int)(v).size())
#define all(v) (v).begin(),(v).end()
#define MASK(x) (1LL << (x))
#define BIT(x, i) (((x) >> (i)) & 1)
int delta[6]{1, 4097, 5121, 5377, 5441, 5457};
void remember(int n) {
REP(i,6){
bit_set((n >> (i * 2)) + delta[i]);
}
}
int compare(int b) {
vector<int> p;
REP(i,6)p.pb((b >> (i * 2)) + delta[i]);
int l = 0, r = 5;
int lca_high = -1;
while(l <= r){
int mid = (l + r) >> 1;
if(!bit_get(p[mid])){
lca_high = mid;
l = mid + 1;
}else r = mid - 1;
}
if(lca_high == -1)return 0;
int cur = p[lca_high];
int d = (b >> (lca_high * 2)) % 4;
if(d == 0)return -1;
if(d == 1)return bit_get(cur - 1) ? 1 : -1;
if(d == 2)return bit_get(cur + 1) ? -1 : 1;
if(d == 3)return 1;
return 2008;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |