알고리즘
백준 15565번 귀여운 라이언 C++
영춘권의달인
2022. 11. 15. 10:09
https://www.acmicpc.net/problem/15565
15565번: 귀여운 라이언
꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의
www.acmicpc.net
슬라이딩 윈도우
큐를 이용하였다.
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>
using namespace std;
using int64 = long long;
int n, k;
vector<int> v;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n >> k;
v = vector<int>(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
queue<int> q;
bool ans = false;
int len = 987654321;
for (int i = 0; i < n; i++) {
if (v[i] == 2) continue;
if (q.size() == k - 1) {
int lastIdx = q.front();
q.pop();
ans = true;
len = min(len, i - lastIdx + 1);
}
q.push(i);
}
if (ans) cout << len;
else cout << -1;
}