Submission #1139038

#TimeUsernameProblemLanguageResultExecution timeMemory
1139038luanzitoSecret (JOI14_secret)C++20
100 / 100
348 ms4436 KiB
#include "secret.h" int n; int st[11][1010]; void build(int n, int l, int r, int p, int A[]) { if(l == r){ st[p][l] = A[l]; return; } int m = (l + r) / 2; build(n, l, m, p + 1, A); build(n, m + 1, r, p + 1, A); st[p][m] = A[m]; st[p][m + 1] = A[m + 1]; for(int i = m - 1; i >= l; i--) st[p][i] = Secret(A[i], st[p][i + 1]); for(int i = m + 2; i <= r; i++) st[p][i] = Secret(st[p][i - 1], A[i]); } void Init(int N, int A[]){ n = N; build(N, 0, N - 1, 0, A); } int solve(int l, int r, int a, int b, int p){ 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(l, m, a, b, p + 1); else return solve(m + 1, r, a, b, p + 1); } int Query(int L, int R){ return solve(0, n - 1, L, R, 0); }
#Verdict Execution timeMemoryGrader output
Fetching results...