https://www.acmicpc.net/problem/2531

회전 초밥인 점을 간과해서 한 번 틀렸던 문제이다.
반례 예시)
8 4 3 4
1
2
1
1
1
1
1
3
ans = 4
n, d, k, c = map(int, input().split())
sushi = []
answer = 0
for _ in range(n):
sushi.append(int(input()))
for i in range(k-1):
sushi.append(sushi[i]) # 회전초밥이므로
sushi_selected = [False]*(d+1)
for i in range(0, n):
flag = False # 쿠폰 초밥 있는지
for j in range(i, i+k):
sushi_selected[sushi[j]] = True
if sushi[j] == c: flag = True
if answer <= sushi_selected.count(True):
answer = sushi_selected.count(True)
if not flag:
answer += 1
sushi_selected[sushi[i]] = False
print(answer)