2024-08-08 06:12:15 +00:00
|
|
|
#include<bits/stdc++.h>
|
|
|
|
using namespace std;
|
2024-08-09 09:12:44 +00:00
|
|
|
#define int long long
|
2024-08-08 06:12:15 +00:00
|
|
|
|
|
|
|
const int MAX_N = 3e5+5;
|
2024-08-09 09:12:44 +00:00
|
|
|
int a[MAX_N],tmax[MAX_N*4],tmin[MAX_N*4];
|
|
|
|
int n;
|
|
|
|
int ans=INT_MIN;
|
2024-08-08 06:12:15 +00:00
|
|
|
|
2024-08-09 09:12:44 +00:00
|
|
|
void build(int tmin[],int tmax[],int a[],int s,int e,int n){
|
|
|
|
if(s==e){
|
|
|
|
tmax[n]=tmin[n]=a[s];
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
int m=s+(e-s)/2;
|
|
|
|
build(tmin, tmax, a, s, m, n*2);
|
|
|
|
build(tmin, tmax, a, m+1, e, n*2+1);
|
|
|
|
tmax[n]=max(tmax[n*2],tmax[n*2+1]);
|
|
|
|
tmin[n]=min(tmin[n*2],tmin[n*2+1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
int search_max(int tmax[],int s,int e,int n,int l,int r){
|
|
|
|
if(l<=s&&e<=r)return tmax[n];
|
|
|
|
if(e<l||r<s)return LONG_LONG_MIN;
|
|
|
|
int m=s+(e-s)/2;
|
|
|
|
int nmax=LONG_LONG_MIN;
|
|
|
|
if(l<=m)nmax=max(search_max(tmax, s, m, n*2, l, r),nmax);
|
|
|
|
if(m<r)nmax=max(search_max(tmax, n+1, e, n*2+1, l, r),nmax);
|
|
|
|
return nmax;
|
|
|
|
}
|
2024-08-08 06:12:15 +00:00
|
|
|
|
2024-08-09 09:12:44 +00:00
|
|
|
int search_min(int tmin[],int s,int e,int n,int l,int r){
|
|
|
|
if(l<=s&&e<=r)return tmin[n];
|
|
|
|
if(e<l||r<s)return LONG_LONG_MAX;
|
|
|
|
int m=s+(e-2)/2;
|
|
|
|
int nmin=LONG_LONG_MAX;
|
|
|
|
if(l<=m)nmin=min(search_max(tmax, s, m, n*2, l, r),nmin);
|
|
|
|
if(m<r)nmin=min(search_max(tmax, m+1, e, n*2+1, l, r),nmin);
|
|
|
|
return nmin;
|
|
|
|
}
|
2024-08-08 15:43:59 +00:00
|
|
|
|
2024-08-09 09:12:44 +00:00
|
|
|
signed main(){
|
|
|
|
ios::sync_with_stdio(false);
|
2024-08-08 06:12:15 +00:00
|
|
|
cin.tie(0);
|
2024-08-09 09:12:44 +00:00
|
|
|
|
2024-08-08 06:12:15 +00:00
|
|
|
cin>>n;
|
|
|
|
for(int i=1;i<=n;i++){
|
2024-08-09 09:12:44 +00:00
|
|
|
cin>>a[i];
|
2024-08-08 15:43:59 +00:00
|
|
|
}
|
2024-08-09 09:12:44 +00:00
|
|
|
build(tmin, tmax, a, 1, n, 1);
|
2024-08-08 15:43:59 +00:00
|
|
|
for(int l=1;l<=n;l++){
|
|
|
|
for(int r=l;r<=n;r++){
|
2024-08-09 09:12:44 +00:00
|
|
|
ans=max(
|
|
|
|
search_max(tmax, 1, n, 1, l, r)
|
|
|
|
^
|
|
|
|
search_min(tmin, 1, n, 1, l, r)
|
|
|
|
,
|
|
|
|
ans
|
|
|
|
);
|
2024-08-08 06:12:15 +00:00
|
|
|
}
|
|
|
|
}
|
2024-08-08 15:43:59 +00:00
|
|
|
cout<<ans<<endl;
|
2024-08-08 06:12:15 +00:00
|
|
|
}
|