Submission #1142281

#TimeUsernameProblemLanguageResultExecution timeMemory
1142281Aria_lix19cmp (balkan11_cmp)C++20
0 / 100
479 ms66096 KiB
#include "cmp.h"
#include "bits/stdc++.h"
using namespace std;
vector<vector<int>>allmemory(6), allmemory2(6);

vector<int> turnto4(int n){
    vector<int>base4;
    int y = 6;
    while(y--){
        base4.push_back(n%4);
        n /= 4;
    }
    reverse(base4.begin(),base4.end());
    return base4;
}
long long turnto10(vector<int>&n){
    long long num = 0;
    for(int i = 0; i < n.size(); i++){
        num += (pow(4, n.size()-1-i)*n[i]);
    }
    return num;
}

vector<int>A, B;
void remember(int a){
    A = turnto4(a);
    for(int i = 0; i < 6; i++){
        allmemory[i].resize(pow(4, i+1)+1);
    }
    vector<int>sub;
    for(int i = 0; i < 6; i++){
        sub.push_back(A[i]);
        allmemory[i][turnto10(sub)] = 1;
    }
}

int compare(int b){
    for(int i = 0; i < 6; i++){
        allmemory2[i].resize(pow(4, i+1));
    }
    B = turnto4(b);
    
    vector<int>sub;
    for(int i = 0; i < 6; i++){
        sub.push_back(B[i]);
        allmemory2[i][turnto10(sub)] = 1;
    }
    int l = 0, r = 5, mid;
    bool flag = 0;
    while(l <= r){
        mid = (l+r)/2;
        if(allmemory[mid] != allmemory2[mid]){
            flag = 1;
            r = mid-1;
        }
        else{
            l = mid+1;
        }
    }
//    A[l]= 0;
    if(B[l] == 0) return -1;
    else if(B[l] == 3) return 1;
    else if(B[l] == 2){
        if(A[l] == 3) return -1;
        else return 1;
    }
    else if(B[l] == 1){
        if(A[l] == 0) return 1;
        else return -1;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...