公式

B - 花壇の整備 / Flower Bed Maintenance 解説 by sounansya


求める列は、ランレングス圧縮した際に同じ要素が \(K\) 個以上ある場所のみを取り出した列と一致します。したがって、与えられた列をランレングス圧縮し、長さが \(K\) 未満の列を削除する操作を行うことで答えを求めることができます。

実装例(Python3)

from itertools import groupby

n, k = map(int, input().split())
s = list(map(int, input().split()))
t = groupby(s)
ans = []
for x, y in t:
    le = len(list(y))
    if le >= k:
        ans += [x] * le
print(*ans)

投稿日時:
最終更新: