https://www.acmicpc.net/problem/2531
https://www.acmicpc.net/problem/15961
import sys
input=sys.stdin.readline
n,d,k,c=map(int,input().split())
a=[]
for i in range(n):
a.append(int(input()))
b=[0]*(d+1)
b[c]=1
cnt=1
ans=0
for i in range(k):
if b[a[i]]==0:
cnt+=1
b[a[i]]+=1
ans=max(ans,cnt)
for i in range(k,n):
j=i-k
if b[a[i]]==0:
cnt+=1
b[a[i]] += 1
b[a[j]] -= 1
if b[a[j]] == 0:
cnt -= 1
ans=max(ans,cnt)
a=a[n-k+1:]+a[:n-k+1]
b=[0]*(d+1)
b[c]=1
cnt=1
for i in range(k):
if b[a[i]]==0:
cnt+=1
b[a[i]]+=1
ans=max(ans,cnt)
for i in range(k,k+(n-1-k)):
j=i-k
if b[a[i]]==0:
cnt+=1
b[a[i]] += 1
b[a[j]] -= 1
if b[a[j]] == 0:
cnt -= 1
ans=max(ans,cnt)
print(ans)
'코딩 테스트 > 백준 - 일반' 카테고리의 다른 글
3078. 좋은 친구 (1) | 2023.01.28 |
---|---|
1593. 문자 해독 (0) | 2023.01.28 |
11003. 최솟값 찾기 (0) | 2023.01.28 |