Advertisement
mfgnik

Untitled

Jul 13th, 2020
1,330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.64 KB | None | 0 0
  1. from collections import deque
  2.  
  3. n, k = map(int, input().split())
  4. x, d, ssum = list(map(int, input().split())), deque(), 0
  5. b = deque()
  6. for i in range(k + 2):
  7.     b.append((0, []))
  8. for i in range(n):
  9.     ssum += x[i]
  10.     if i >= k:
  11.         ssum -= x[i - k]
  12.         if d[0] == i - k:
  13.             d.popleft()
  14.     while len(d) and x[d[-1]] >= x[i]:
  15.         d.pop()
  16.     d.append(i)
  17.     if i >= k - 1:
  18.         i1 = (i - 1) % (k + 1)
  19.         ik = (i - k) % (k + 1)
  20.         ii = i % (k + 1)
  21.         nb = (b[ik][0] + x[d[0]] * ssum, b[ik][1] + [i - k + 2])
  22.         b[ii] = max(b[i1], nb, key=lambda x: x[0])
  23. print(len(max(b)[1]))
  24. print(*max(b)[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement