#include "secret.h"
#include <bits/stdc++.h>
const int N = 1e3+3;
int opr[N][10], msk[N], Ar[N];
void pre(int l, int r, int lvl){
  if(l==r) return;
  int m = (l+r)/2;
  for(int i=l; i<=m; i++) msk[i] ^= 1<<lvl;
  opr[m][lvl] = Ar[m];
  for(int i=m-1; i>=l; i--) opr[i][lvl] = Secret(Ar[i], opr[i+1][lvl]);
  opr[m+1][lvl] = Ar[m+1];
  for(int i=m+2; i<=r; i++) opr[i][lvl] = Secret(Ar[i], opr[i-1][lvl]);
  pre(l, m, lvl+1);
  pre(m+1, r, lvl+1);
}
void Init(int N, int A[]) {
  for(int i=0; i<N; i++) Ar[i] = A[i];
  pre(0, N-1, 0);
}
int Query(int L, int R) {
  if(L == R) return Ar[L];
  int ms = msk[L]^msk[R];
  int lvl=__builtin_ctz(ms);
  return Secret(opr[L][lvl], opr[R][lvl]);
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |