Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import deque
- n, k = map(int, input().split())
- x, d, ssum = list(map(int, input().split())), deque(), 0
- b = deque()
- for i in range(k + 2):
- b.append((0, []))
- for i in range(n):
- ssum += x[i]
- if i >= k:
- ssum -= x[i - k]
- if d[0] == i - k:
- d.popleft()
- while len(d) and x[d[-1]] >= x[i]:
- d.pop()
- d.append(i)
- if i >= k - 1:
- i1 = (i - 1) % (k + 1)
- ik = (i - k) % (k + 1)
- ii = i % (k + 1)
- nb = (b[ik][0] + x[d[0]] * ssum, b[ik][1] + [i - k + 2])
- b[ii] = max(b[i1], nb, key=lambda x: x[0])
- print(len(max(b)[1]))
- print(*max(b)[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement