#include <bits/stdc++.h>
#include "secret.h"
using namespace std;
int dp[1010][1010], n;
void daq(int l, int r, int A[]){
int m = (l+r)>>1;
dp[m][m] = A[m];
dp[m+1][m+1] = A[m+1];
for(int i = m+2; i <= r; i++)
dp[m+1][i] = Secret(dp[m+1][i-1],A[i]);
for(int i = m-1; i >= l; i--)
dp[i][m] = Secret(A[i],dp[i+1][m]);
if(l < m) daq(l,m,A);
if(r > m+1) daq(m+1,r,A);
}
void Init(int N, int A[]) {
n = N; daq(0,n-1,A);
}
int Query(int L, int R) {
int l = 0, r = n-1;
while(l!=r){
int m = (l+r)>>1;
if(m >= L && m < R) return Secret(dp[L][m],dp[m+1][R]);
if(m==R) return dp[L][m];
if(m < L) l = m+1;
else r = m;
}
return dp[l][r];
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |