#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 time | Memory | Grader output |
---|
Fetching results... |