fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. int x[100050],dp1[100050],dp2[100050],n,m,maxx=-1e9-10,ans;
  5. signed main(){
  6. ios::sync_with_stdio(false);
  7. cin.tie(0),cout.tie(0);
  8. cin>>n;
  9. for(int i=1;i<=n;i++){
  10. cin>>x[i];
  11. }
  12. for(int i=1;i<=n;i++){
  13. dp1[i]=1;
  14. dp2[i]=1;
  15. }
  16. int e;
  17. for(int i=1;i<=n;i++){
  18. for(int j=1;j<=i-1;j++){
  19. if(x[i]>x[j]){
  20. if(dp1[j]+1<dp1[i]){
  21. ans++;
  22. }
  23. dp1[i]=max(dp1[i],dp1[j]+1);
  24. ans++;
  25. e=i;
  26. }
  27. }
  28. }
  29. for(int i=n;i>=e;i--){
  30. for(int j=i;j<=n;j++){
  31. if(x[i]<x[j]){
  32. if(dp2[j]+1>dp2[i]){
  33. ans++;
  34. }
  35. dp2[i]=max(dp2[i],dp2[j]+1);
  36.  
  37. }
  38. }
  39. }
  40. cout<<ans-1;
  41. return 0;
  42. }
Success #stdin #stdout 0.01s 5320KB
stdin
8
186 186 150 200 160 130 197 220
stdout
17