Untitled
unknown
plain_text
3 years ago
1.3 kB
3
Indexable
#include <bits/stdc++.h> using namespace std; long num; vector<long > leaders; long cal() { vector<long> dpfront1(num,1) , dpback1(num,1) , dpfront2(num,1) ,dpback2(num,1); for(int i = 0 ; i < num ; i++){ long x = 0 ,y = 0; for(int j = 0 ; j < i ; j++){ if(leaders[i] > leaders[j]){ x = max(x,dpfront1[j]); } else if(leaders[i] < leaders[j]){ y = max(y,dpfront2[j]); } } dpfront1[i] += x; dpfront2[i] += y; } long res1=0,res2=0; for(int i = num-1;i >= 0;i--){ long x = 0 ,y = 0; for(int j = num-1 ; j > i ; j--){ if(leaders[i] > leaders[j]){ x = max(x,dpback1[j]); } else if(leaders[i] < leaders[j]){ y = max(y,dpback2[j]); } } dpback1[i] += x; dpback2[i] += y; res1 = max(res1 , dpfront1[i]+dpback1[i]-1); res2 = max(res2 , dpfront2[i]+dpback2[i]-1); } return max(res1,res2); } int main(){ cin.tie(0); cin.sync_with_stdio(0); cin>>num; for(int i = 0 ; i < num ; i ++){ long a; cin>>a; leaders.push_back(a); } cout<<cal(); return 0; }
Editor is loading...