fork(2) download
  1. from itertools import pairwise
  2.  
  3. def findCriticalPoints(values):
  4. n = len(values)
  5. if n < 3:
  6. return [-1, -1]
  7.  
  8. critical_indices = []
  9.  
  10. for i in range(1, n - 1):
  11. if (values[i] > values[i - 1] and values[i] > values[i + 1]) or \
  12. (values[i] < values[i - 1] and values[i] < values[i + 1]):
  13. critical_indices.append(i)
  14.  
  15. if len(critical_indices) < 2:
  16. return [-1, -1]
  17.  
  18. minDist = min(b - a for a, b in pairwise(critical_indices))
  19. maxDist = critical_indices[-1] - critical_indices[0]
  20.  
  21. return [minDist, maxDist]
  22.  
  23.  
  24. n = int(input())
  25. values = list(map(int, input().split()))
  26.  
  27. result = findCriticalPoints(values)
  28. print(result[0], result[1])
  29.  
Success #stdin #stdout 0.1s 14180KB
stdin
9
1 3 2 2 3 2 2 2 7
stdout
3 3