Submission #1142257

#TimeUsernameProblemLanguageResultExecution timeMemory
1142257SulA비교 (balkan11_cmp)C++20
100 / 100
1316 ms104392 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)) + 500; } for (int i = 0; i < 6; i++) { bit_set(cum[i] + (a >> i*2)); // cout << quat((a >> i*2)) << '\n'; } // cout<<'\n'; } int compare(int b) { #define f(i) bit_get(cum[i] + (b >> i*2)) int ans; int l = -1, r = 6; while (l+1 < r) { int mid = (l+r)/2; if (f(mid)) r = mid; else l = mid; } if (l == -1) return 0; b >>= 2*l; if (b % 4 == 0) ans = -1; if (b % 4 == 1) ans = bit_get(b + cum[l] - 1) ? 1 : -1; if (b % 4 == 2) ans = bit_get(b + cum[l] + 1) ? -1 : 1; if (b % 4 == 3) ans = 1; return ans; // 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...