Submission #1139034

#TimeUsernameProblemLanguageResultExecution timeMemory
1139034luanzitoSecret (JOI14_secret)C++20
0 / 100
336 ms4448 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; const int maxn = 1e3 + 10; const int maxl = 1e1 + 5; 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 = 1; i <= n; i++) v[i] = A[i - 1]; build(1, n, 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, 1, n); }
#Verdict Execution timeMemoryGrader output
Fetching results...