Submission #1139031

#TimeUsernameProblemLanguageResultExecution timeMemory
1139031luanzitoSecret (JOI14_secret)C++20
0 / 100
333 ms4468 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; const int maxn = 1010; const int maxl = 15; int n; int v[maxn]; int st[maxl][maxn]; void build(int l, int r, int p){ if(l == r){ st[p][l] = v[l]; return; } int m = (l + r) / 2; build(l, m, p + 1); build(m + 1, r, p + 1); st[p][m] = v[m]; st[p][m + 1] = v[m + 1]; int last = v[m]; for(int i = m - 1; i >= l; i--) st[p][i] = Secret(v[i], st[p][i + 1]); for(int i = m + 2; i <= r; i++) st[p][i] = Secret(v[i], st[p][i - 1]); } void Init(int N, int A[]){ n = N; for(int i = 0; i < n; i++) v[i] = A[i]; build(0, n - 1, 0); } int solve(int a, int b, int p, int l, int r){ if(l == r) return st[p][l]; int m = (l + r) / 2; if(a <= m && b > m) return Secret(st[p][a], st[p][b]); if(a <= m) return solve(a, b, p + 1, l, m); else return solve(a, b, p + 1, m + 1, r); } int Query(int L, int R){ return solve(L, R, 0, 0, n - 1); }
#Verdict Execution timeMemoryGrader output
Fetching results...