#include <bits/stdc++.h>
#include "cmp.h"
using namespace std;
#define pb push_back
void remember(int n) {
int x=1;
string s="1";
for(int i=1;i<=6;i++){
if(i!=4)bit_set(n%4+x);
if(i>3)s+=to_string(n%4);
x+=4;
n/=4;
}
bit_set(stoi(s));
}
int compare(int b) {
vector<int> v;
string s="1";
for(int i=1;i<=6;i++){
v.pb(b%4);
if(i>3)s+=to_string(b%4);
b/=4;
}
bool flag=0;
if(bit_get(stoi(s)))flag=1;
int f=4*5+1;
for(int i=v.size()-1;i>=0;i--) {
if (flag && i >= 3) {
f -= 4;
continue;
}
if (i == 3) {
int x=v[i];
string s = "1" + to_string(x), s1 = to_string(v[i + 1]) + to_string(v[i + 2]);
int r = bit_get(stoi(s + s1));
if (r == 1) {
f -= 4;
continue;
}
if (x == 3)return 1;
if (x == 0)return -1;
if (x == 2) {
r = bit_get(stoi(s + s1) + 1);
if (r == 1)return -1;
else return 1;
}
if (x == 1) {
r = bit_get(stoi(s + s1) - 1);
if (r == 1)return 1;
else return -1;
}
f -= 4;
}
else{
int x=v[i];
int r=bit_get(f+x);
if(r==1){
f-=4;
continue;
}
if(x==3)return 1;
if(x==0)return -1;
if(x==2){
r=bit_get(f+x+1);
if(r==1)return -1;
else return 1;
}
if(x==1){
r=bit_get(f+x-1);
if(r==1)return 1;
else return -1;
}
f-=4;
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |