#include "secret.h"
#include <bits/stdc++.h>
using namespace std;
#define pb(x) push_back(x)
#define sz(x) x.size()
const int maxN = 1e3 + 10;
int n;
int a[maxN];
struct SegTree {
struct Node {
int lsuf[maxN];
int rpre[maxN];
} t[maxN<<2];
void initialize(int id, int L, int R) {
if(L+1 == R) {
t[id].lsuf[L] = a[L];
return;
}
int mid = (L+R)>>1;
initialize(2*id+0, L, mid);
initialize(2*id+1, mid, R);
t[id].lsuf[L] = a[L];
for(int i = L+1; i < mid; i++)
t[id].lsuf[i] = Secret(t[id].lsuf[i-1], a[i]);
t[id].rpre[mid] = a[mid];
for(int i = mid+1; i < R; i++)
t[id].rpre[i] = Secret(t[id].rpre[i-1], a[i]);
}
int get(int id, int L, int R, int l, int r) {
if(L+1 == R)
return a[L];
int mid = (L+R)>>1;
if(l >= mid)
return get(2*id+1, mid, R, l, r);
if(r < mid)
return get(2*id+0, L, mid, l, r);
return Secret(t[id].lsuf[l], t[id].rpre[r]);
}
} s;
void Init(int N, int A[]) {
n = N;
for(int i = 1; i <= n; i++)
a[i] = A[i-1];
s.initialize(1, 1, n+1);
}
int Query(int L, int R) {
return s.get(1, 1, n+1, L+1, R+1);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |