Submission #1034372

#TimeUsernameProblemLanguageResultExecution timeMemory
1034372vjudge1cmp (balkan11_cmp)C++17
0 / 100
438 ms105296 KiB
#include "cmp.h" #include <bits/stdc++.h> using namespace std; bool f = 1; vector<int> idx[12]; void remember(int a) { if (f) { f = 0; int curr = 1; for (int i = 0; i < 12; i++) { idx[i].resize(1 << (i+1)); for (int j = 0; j < (1 << (i+1)); j++) { idx[i][j] = curr++; } } } int sum = 0; for (int i = 0; i < 12; i++) { if ((a >> i) & 1) sum += (1 << i); bit_set(idx[i][sum]); } } int compare(int b) { int sum[12]; for (int i = 0; i < 12; i++) { sum[i] = (i ? sum[i-1] : 0) + (((b >> i) & 1) ? (1 << i) : 0); } int l = 0; int r = 12; while (l < r) { int mid = (l+r) >> 1; // difieren en el bit mid? // el prefix hasta i es igual? if (bit_get(idx[mid][sum[mid]])) l = mid+1; else r = mid; } if (l == 12) return 0; else if ((b >> l) & 1) return 1; else return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...