fork download
  1. #include <iostream>
  2. using namespace std;
  3. #include<vector>
  4. #include <bits/stdc++.h>
  5.  
  6. int main() {
  7. // your code goes here
  8. int n;
  9. cin>>n;
  10. vector<int>arr(n+1);
  11. int i=1;
  12. while(i<=n)
  13. {
  14. cin>>arr[i];
  15. i++;
  16. }
  17.  
  18. int prefix[n+1]={0};
  19.  
  20. prefix[0]=0;
  21. int inc_len=0;
  22. for(int i=1;i<=n;i++)
  23. {
  24. if(arr[i-1]<arr[i])
  25. {
  26. prefix[i]=prefix[i-1]+1;
  27. }
  28. else
  29. {
  30. prefix[i]=1;
  31. }
  32.  
  33. inc_len=max(inc_len,prefix[i]);
  34. //cout<<prefix[i]<<'\n';
  35.  
  36. }
  37. //cout<<inc_len;
  38.  
  39. int suffix[n+1];
  40. suffix[n]=1;
  41. int dec_len=0;
  42. for(int i=n-1;i>=1;i--)
  43. {
  44. if(arr[i]>arr[i+1])
  45. {
  46. suffix[i]=suffix[i+1]+1;
  47. }
  48. else
  49. {
  50. suffix[i]=1;
  51. }
  52. // cout<<suffix[i]<<'\n';
  53. dec_len=max(dec_len,suffix[i]);
  54. }
  55.  
  56. //cout<<dec_len;
  57.  
  58.  
  59. // largest mountain:
  60.  
  61. //cout<<(inc_len+dec_len-1);
  62.  
  63. //no of mountains whose topmost index is 'i'
  64.  
  65. int count_mountains=0;
  66. for(int i=1;i<=n;i++)
  67. {
  68. if(prefix[i]>=2&&suffix[i]>=2)
  69. count_mountains+=(prefix[i]-1)*(suffix[i]-1);
  70. }
  71.  
  72. cout<<count_mountains;
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79. return 0;
  80. }
Success #stdin #stdout 0.01s 5300KB
stdin
5
1 2 4 2 1
stdout
4