Submission #1288277

#TimeUsernameProblemLanguageResultExecution timeMemory
1288277khoavn2008cmp (balkan11_cmp)C++17
100 / 100
2094 ms96164 KiB
#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 timeMemoryGrader output
Fetching results...