FroztGal

window_max

Jan 14th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.86 KB | None | 0 0
  1. # Input
  2. n = int(input())
  3. el = [int(x) for x in input().rstrip().split()]
  4. win_len = int(input())
  5.  
  6. # Init
  7. tail = [[-1, -1]]
  8. head = [[-1, -1]]
  9. max_tail = -1
  10. max_head = -1
  11.  
  12. # Main
  13. for i in range(win_len):
  14.     if max_tail < el[i]:
  15.         max_tail = el[i]
  16.     tail.append([el[i], max_tail])
  17. print(max_tail, end=' ')
  18. for i in range(win_len, n):
  19.     if len(tail) == win_len + 1:
  20.         max_head = -1
  21.         max_tail = -1
  22.         while len(tail) != 1:
  23.             tmp = tail.pop()
  24.             if max_head < tmp[0]:
  25.                 max_head = tmp[0]
  26.             head.append([tmp[0], max_head])
  27.     head.pop()
  28.     if max_tail < el[i]:
  29.         max_tail = el[i]
  30.     tail.append([el[i], max_tail])
  31.     if tail[-1][1] > head[-1][1]:
  32.         print(tail[-1][1], end=' ' if i + 1 != n else '')
  33.     else:
  34.         print(head[-1][1], end=' ' if i + 1 != n else '')
Add Comment
Please, Sign In to add comment