# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1272002 | ezzzay | Secret (JOI14_secret) | C++20 | 0 ms | 0 KiB |
//#include "secret.h"
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
vector<int>a;
int n;
int st[5000];
void build(int node, int L, int R){
if(L==R){
st[node]=a[L];
return;
}
int mid=(L+R)/2;
build(node*2,L,mid);
build(node*2+1,mid+1,R);
st[node]=Secret(st[node*2],st[node*2+1]);
}
int find(int node, int L, int R, int l, int r){
if(l<=L and R<=r)return st[node];
if(l>R or L>r)return -1;
int mid=(L+R)/2;
int x=find(node*2,L,mid,l,r);
int y=find(node*2+1,mid+1,R,l,r);
if(x==y and y==-1)return -1;
else if(x==-1)return y;
else if(y==-1)return x;
else return Secret(x,y);
}
void Init(int N, int A[]) {
n=N;
a.clear();
a.pb(0);
for(int i=0;i<N;i++)a.push_back(A[i]);
build(1,1,n);
}
int Query(int L, int R) {
L++,R++;
return find(1,1,n,L,R);
}