Submission #1226638

#TimeUsernameProblemLanguageResultExecution timeMemory
1226638tonSecret (JOI14_secret)C++20
0 / 100
342 ms4376 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 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); a = A; } int Query(int L, int R) { if (L == R) return a[L]; int level = __builtin_ctz(mask[L] ^ mask[R]); return Secret(data[level][L], data[level][R]); } //int Secret(int X, int Y);
#Verdict Execution timeMemoryGrader output
Fetching results...