#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

+ Recent posts