Submission #1310086

#TimeUsernameProblemLanguageResultExecution timeMemory
1310086mohammadyaycmp (balkan11_cmp)C++20
91 / 100
1583 ms82612 KiB
#include "cmp.h" #include <bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ordered_set tree<ll, null_type, less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update> #define endl '\n' using ll = long long; #define pb push_back #define pF first #define pS second #define SP <<' '<< #define all(x) (x).begin(), (x).end() //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); void bit_set(int addr); int bit_get(int addr); struct base8{ int d3, d2, d1, d0; }; base8 makebase8(int n) { base8 x; int p3 = 8*8*8, p2 = 8*8, p1 = 8, p0 = 1; for (int j=3; j>=0; j--) { ll p; int* y; if (j == 3) { p = p3; y = &x.d3; } else if (j == 2) { p = p2; y = &x.d2; } else if (j == 1) { p = p1; y = &x.d1; } else { p = p0; y = &x.d0; } for (int i = 7; i >= 0; i--) { if (p * i <= n) { *y = i; n -= p * i; break; } } } return x; } void remember(int n) { // 1-8 first digit, 9-16 second digit, 17-24 third digit, 25-32 last digit base8 x = makebase8(n); bit_set(x.d3+1); bit_set(x.d2+9); bit_set(x.d1+17); bit_set(x.d0+25); } int compare(int b) { base8 x = makebase8(b); if (bit_get(x.d3+1)) { if (bit_get(x.d2+9)) { if (bit_get(x.d1+17)) { if (bit_get(x.d0+25)) { return 0; } else { if(x.d0 <= 3) { for (int i=x.d0-1; i>=0; i--) if (bit_get(i+25)) return 1; return -1; } else { for (int i=x.d0+1; i<=7; i++) if (bit_get(i+25)) return -1; return 1; } } } else { if(x.d1 <= 3) { for (int i=x.d1-1; i>=0; i--) if (bit_get(i+17)) return 1; return -1; } else { for (int i=x.d1+1; i<=7; i++) if (bit_get(i+17)) return -1; return 1; } } } else { if(x.d2 <= 3) { for (int i=x.d2-1; i>=0; i--) if (bit_get(i+9)) return 1; return -1; } else { for (int i=x.d2+1; i<=7; i++) if (bit_get(i+9)) return -1; return 1; } } } else { if(x.d3 <= 3) { for (int i=x.d3-1; i>=0; i--) if (bit_get(i+1)) return 1; return -1; } else { for (int i=x.d3+1; i<=7; i++) if (bit_get(i+1)) return -1; return 1; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...