#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5,mod=1e9+7,inf=1e18;
int n,a[N],x,y;
pair<int,int> solve(int l, int r) {
if (l==r) {
return {0, l};
}
int mx=0;
for (int i=l; i<=r; i++)
if (a[mx]<a[i]) mx=i;
if (l==mx) {
pair<int,int> R=solve(mx+1,r);
return {R.first+R.second-mx,mx};
}
if (mx==r){
pair<int,int> L=solve(l,mx-1);
return {L.first-L.second+mx,mx};
}
pair<int,int> L=solve(l,mx-1),R=solve(mx+1,r);
return max(pair<int,int>{R.first+R.second-mx,mx},pair<int,int>{L.first-L.second+mx,mx});
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for (int i=1; i<=n; i++) cin>>a[i];
for (int i=1; i<n; i++){
cin>>x>>y;
}
cout<<solve(1,n).first;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |