Submission #1314333

#TimeUsernameProblemLanguageResultExecution timeMemory
1314333coolboy19521cmp (balkan11_cmp)C++17
100 / 100
2101 ms98456 KiB
#include "cmp.h"
#include "bits/stdc++.h"

using namespace std;

const int mxl=12;

int rev(int a){
  int b=0;
  for(int i=0;i<mxl;i++)
    b=b<<1|a&1,a>>=1;
  return b;
}

int cod(int a,int i){
  return a+(1<<(i+1));
}

void remember(int n){
  int x=n;
  n=rev(n);
  for(int i=0,a=0;i<mxl;i+=2){
    a=a|n&1<<i|n&1<<(i+1);
    bit_set(cod(a,i));
  }
}

int compare(int b){
  int x=b;
  b=rev(b);
  vector<int>p;
  for(int i=0,a=0;i<mxl;i+=2){
    a=a|b&1<<i|b&1<<(i+1);
    p.push_back(a);
  }
  int bs=-1;
  for(int l=0,r=p.size()-1;l<=r;){
    int mi=(l+r)>>1;
    if(bit_get(cod(p[mi],mi<<1)))l=mi+1;
    else {
      r=mi-1,bs=mi;
    }
  }
  if(bs==-1)return 0;
  else{
    if(p[bs]&1<<(bs*2)){
      int y=p[bs]|1<<(bs*2+1);
      return bit_get(cod(y,bs<<1))?-1:1;
    }else{
      int y=p[bs]&(((1<<mxl)-1)^1<<(bs*2+1));
      return bit_get(cod(y,bs<<1))?1:-1;
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...