오늘의 알고리즘
[C++]백준 2531번 회전 초밥
하늘하늘 .
2022. 4. 29. 21:26
#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;
}
언오더드맵을 썻었는데 시간초과...
아예 처음부터 최소한의 범위를 만들어서 넣어주면 시간초과안된다.