Submission #1299430

#TimeUsernameProblemLanguageResultExecution timeMemory
1299430Sofiatpc비교 (balkan11_cmp)C++20
100 / 100
3606 ms96156 KiB
#include "cmp.h"
#include <bits/stdc++.h>

using namespace std;

#define sz(v) (int)v.size()

void remember(int n) {
  int base = 4;
  vector<int> dig;
  int x = n;
  for(int j = 0; j < 6; j++){
    dig.push_back(x%4);
    x/=4;
    //cout<<dig[j]<<" ";
  }//cout<<"\n";

  int mx = 0; x = 0;
  for(int i = sz(dig)-1; i >= 0; i--){
    x *= 4; x += dig[i];
    bit_set(mx + x +1);
    //cout<<mx+x+1<<" ";
    mx *= 4; mx += 4;
  }//cout<<" bitset\n";
}

int compare(int b) {
  vector<int> dig;
  int x = b;
  for(int j = 0; j < 6; j++){
    dig.push_back(x%4);
    x/=4;
    //cout<<dig[j]<<" ";
  }//cout<<"\n";

  vector<int> pos;
  int mx = 0; x = 0;
  for(int i = sz(dig)-1; i >= 0; i--){
    x *= 4; x += dig[i];
    pos.push_back(mx + x +1);
    mx *= 4; mx += 4;
  }

  int l = 0, r = 6;
  while(l != r){
    int mid = (l+r)/2;
    int aux = bit_get(pos[mid]);
    if(aux)l = mid+1;
    else r = mid;
  }
  if(l == 6)return 0;

  reverse(dig.begin(),dig.end());

  if(dig[l] == 0)return -1;
  if(dig[l] == 3)return 1;
  if(dig[l] == 2){
    int x = bit_get(pos[l]+1);
    if(x == 1)return -1;
    return 1;
  }
  if(dig[l] == 1){
    int x = bit_get(pos[l]-1);
    if(x == 1)return 1;
    return -1;
  }
}

Compilation message (stderr)

cmp.cpp: In function 'int compare(int)':
cmp.cpp:67:1: warning: control reaches end of non-void function [-Wreturn-type]
   67 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...