// #include <bits/stdc++.h>
#include "secret.h"
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <unordered_map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
using namespace std;
#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second
const int N = 1e3 + 5, M = 1e9 + 7, LG = 10;
int n , A[N] , sp[N][N] , B[N];
void cal(int s , int e){
if (s+1 == e){
sp[s][s] = A[s];
return;
}
int mid = (s+e)/2;
sp[mid][mid-1] = A[mid-1];
for (int i=mid-2 ; i>=s ; i--){
sp[mid][i] = Secret(A[i] , sp[mid][i+1]);
}
sp[mid][mid] = A[mid];
for (int i=mid+1 ; i<e ; i++){
sp[mid][i] = Secret(sp[mid][i-1] , A[i]);
}
cal(s,mid);
cal(mid,e);
}
int ans(int s , int e , int l , int r){
if (s+1 == e){
return A[s];
}
int mid = (s+e)/2;
if (r < mid){
return ans(s,mid,l,r);
}else if (mid <= l){
return ans(mid , e,l,r);
}else{
return Secret(sp[mid][l] , sp[mid][r]);
}
}
void Init(int N, int P[]) {
n = N;
for (int i=0 ; i<n ; i++){
A[i] = P[i];
}
cal(0 , n);
}
int Query(int L, int R) {
return ans(0 , n , L , R);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |