#include "secret.h"
int AA[1005];
int val[1005][1005];
int n;
void rec(int l, int r) {
if(l == r) return;
int mid = (l+r) >> 1;
for(int j=mid+2;j<=r;j++) val[mid+1][j] = Secret(val[mid+1][j-1], AA[j]);
for(int j=mid-1;j>=l;j--) val[j][mid] = Secret(AA[j], val[j+1][mid]);
rec(l, mid); rec(mid+1, r);
}
void Init(int N, int A[]) {
n = N;
for(int i=0;i<N;i++) val[i][i] = AA[i] = A[i];
rec(0, N-1);
//Secret(0, 1000000000);
}
int qr(int l, int r, int tl, int tr) {
int mid = (l+r) >> 1;
if(tl == mid+1) return val[tl][tr];
if(tr == mid) return val[tl][tr];
if(tr < mid) return qr(l, mid, tl, tr);
if(mid+1 < tl) return qr(mid+1, r, tl, tr);
return Secret(val[tl][mid], val[mid+1][tr]);
}
int Query(int L, int R) {
if(L == R) return val[L][R];
return qr(0, n-1, L, R);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |