Submission #1141720

#TimeUsernameProblemLanguageResultExecution timeMemory
1141720SulAcmp (balkan11_cmp)C++20
37 / 100
1457 ms105064 KiB
#include "cmp.h"
#include <iostream>
#include <string>
using namespace std;

int cum[13];

void remember(int a) {
    for (int i = 1; i < 13; i++) {
        cum[i] = cum[i-1] + (1 << 13-i);
    }
    for (int i = 0; i < 12; i++) {
        bit_set(cum[i] + (a >> i) + 1);
    }
}

int compare(int b) {
    if (bit_get(b+1)) return 0;
    short l = 0, r = 12;
    while (l+1 < r) {
        short mid = l + (r-l)/2;
        if (bit_get(cum[mid] + (b >> mid) + 1)) {
            r = mid;
//            cout<<"IF WE SHIFT BY " << mid<< " A = B\n";
        } else {
            l = mid;
//            cout<<"IF WE SHIFT BY " << mid<< " A ≠ B\n";
        }
    }
//    cout<<l<<' '<<r<<'\n';
    b >>= l;
    return b & 1 ? 1 : -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...