Submission #1142231

#TimeUsernameProblemLanguageResultExecution timeMemory
1142231SulAcmp (balkan11_cmp)C++20
55 / 100
964 ms96172 KiB
#include "cmp.h"
#include <iostream>
#include <string>
using namespace std;

int cum[7];

//string quat(int n) {
//    string s(6, '0');
//    for (int i = 0; i < 6; i++)
//        s[i] += (n >> i*2) & 3;
//    reverse(s.begin(), s.end());
//    return s;
//}

void remember(int a) {
    cum[0] = 1;
    for (int i = 1; i < 7; i++) {
        cum[i] = cum[i-1] + (1 << (14 - 2*i));
    }
    for (int i = 0; i < 7; i++) {
        bit_set(cum[i] + (a >> i*2));
//        cout << quat((a >> i*2)) << '\n';
    }
//    cout<<'\n';
}

int compare(int b) {
//    cout<<quat(b)<<'\n';
    for (int i = 6; i >=0; i--) if (!bit_get(cum[i] + (b >> i*2))) {
        b >>= 2*i;
        if (b % 4 == 0) return -1;
        if (b % 4 == 1) return bit_get(b + cum[i] - 1) ? 1 : -1;
        if (b % 4 == 2) return bit_get(b + cum[i] + 1) ? -1 : 1;
        if (b % 4 == 3) return 1;
    }
    return 0;
//    short l = 0, r = 7;
//    while (l+1 < r) {
//        short mid = (l+r)/2;
//        cout << mid << ' ' << quat((b >> mid*2)) << ' '<< bit_get(cum[mid] + (b >> mid*2))<< '\n';
//        if (bit_get(cum[mid] + (b >> mid*2))) {
//            r = mid;
//        } else {
//            l = mid;
//        }
//    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...