#include <iostream>
#include <vector>
#include <algorithm>
int iCount[3001];
int main(void)
{
int N = 0;
int d = 0;
int k = 0;
int c = 0;
std::cin >> N >> d >> k >> c;
std::vector<int> vec(N);
int iAnswer = 0;
for (int i = 0; i < N; ++i)
{
std::cin >> vec[i];
if (i < k)
iAnswer += (iCount[vec[i]]++ == 0);
}
int iResult = iAnswer;
for (int i = k; i < N + k; ++i)
{
iAnswer += (iCount[vec[i]]++ == 0);
iAnswer -= (--iCount[vec[(i - k) % N]] == 0);
iResult = std::max(iResult, iAnswer + (iCount[c] == 0));
}
std::cout << iResult << "\n";
return 0;
}
언오더드맵을 썻었는데 시간초과...
아예 처음부터 최소한의 범위를 만들어서 넣어주면 시간초과안된다.
'오늘의 알고리즘' 카테고리의 다른 글
[C++] 백준 2579번 계단오르기 (0) | 2022.05.02 |
---|---|
[C++]백준 22233번 가희와키워드 (0) | 2022.04.30 |
[C++] 백준 12919번 A와 B 2 (0) | 2022.04.28 |
[C++]백준 1806 부분합 (0) | 2022.04.28 |
[C++] 백준 1253번 좋다 (0) | 2022.04.27 |