Submission #1146803

#TimeUsernameProblemLanguageResultExecution timeMemory
1146803goduadzesabaCat Exercise (JOI23_ho_t4)C++20
21 / 100
2092 ms2236 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...