Ribbons
unknown
plain_text
9 months ago
1.1 kB
12
Indexable
from collections import Counter
N, M, K = map(int, input().split())
ribbon = list(map(int, input().split()))
max_length = 1
max_count = 0
colours: Counter[int] = Counter()
start = 0
end = 1
colours.update([ribbon[0]])
while end < len(ribbon):
# print(ribbon[start:end])
while (
(end < len(ribbon))
and (len(colours) < K or (len(colours) == K and ribbon[end] in colours))
and end - start < M
):
colours.update([ribbon[end]])
end += 1
max_length += 1
max_count = 1
# print(ribbon[start:end])
# print(colours)
# print()
# else:
# print(ribbon[start:end])
if end < len(ribbon):
colours.update([ribbon[end]])
colours.subtract([ribbon[start]])
if colours.get(ribbon[start], 0) == 0 and ribbon[start] in colours:
colours.pop(ribbon[start])
start += 1
end += 1
# print(ribbon[start:end])
# print(colours)
if len(colours) <= K:
max_count += 1
# print("yay")
# print()
print(max_length, max_count)Editor is loading...
Leave a Comment