fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int main() {
  6. int n;
  7. cin >> n;
  8.  
  9. vector<int> b(n + 1);
  10. vector<int> left(n + 1);
  11. vector<int> right(n + 1);
  12. vector<int> valley(n + 1, 0);
  13.  
  14. // Input array b
  15. for (int i = 1; i <= n; i++) {
  16. cin >> b[i];
  17. }
  18.  
  19. // Calculate left array
  20. left[1] = 1;
  21. for (int i = 2; i <= n; i++) {
  22. if (b[i - 1] > b[i]) {
  23. left[i] = left[i - 1] + 1;
  24. } else {
  25. left[i] = 1;
  26. }
  27. }
  28.  
  29. // Calculate right array
  30. right[n] = 1;
  31. for (int i = n - 1; i >= 1; i--) {
  32. if (b[i] < b[i + 1]) {
  33. right[i] = right[i + 1] + 1;
  34. } else {
  35. right[i] = 1;
  36. }
  37. }
  38.  
  39. // Calculate valley array
  40. int sum = 0;
  41. for (int i = 1; i <= n; i++) {
  42. // cout<<i<<" sum is"<<sum<<endl;
  43. valley[i] = (left[i] - 1) * (right[i] - 1);
  44. sum += valley[i];
  45. // cout<<sum<<endl;
  46. }
  47.  
  48. cout << sum << endl;
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 5252KB
stdin
4
5 3 4 8
stdout
2