Submission #1226641

#TimeUsernameProblemLanguageResultExecution timeMemory
1226641tonSecret (JOI14_secret)C++20
0 / 100
337 ms4436 KiB
#include <iostream> #include <utility> #include <vector> #include <ranges> #include <algorithm> #include <functional> #include <numeric> using i64 = long long; #include "secret.h" constexpr int MX = 10; constexpr int maxN = 1010; // int Secret(int X, int Y) { // return std::min(X, Y); // } std::vector<int> myA(maxN); int data[MX][maxN]; int mask[maxN]; int* a; void build(int l, int r, int level, int* A) { if (l == r) return; int m = (l + r) / 2; data[level][m] = A[m]; for (int i = m - 1; i >= l; i--) data[level][i] = Secret(A[i], data[level][i + 1]); data[level][m + 1] = A[m + 1]; for (int i = m + 2; i <= r; i++) data[level][i] = Secret(A[i], data[level][i - 1]); for (int i = m + 1; i <= r; i++) mask[i] ^= (1 << level); build(l, m, level + 1, A); build(m + 1, r, level + 1, A); } void Init(int N, int A[]) { build(0, N - 1, 0, A); for (int i = 0; i < N; i++) myA[i] = A[i]; } int Query(int L, int R) { if (L == R) return myA[L]; int level = __builtin_ctz(mask[L] ^ mask[R]); return Secret(data[level][L], data[level][R]); } // int main() { // int A[] = {1, 2, 10, 4, 5}; // Init(5, A); // std::cout << Query(2, 4) << "\n"; // }
#Verdict Execution timeMemoryGrader output
Fetching results...