deque + 슬라이딩 윈도우
일정한 범위 유지 ㅡ> 슬라이딩 윈도우
범위의 앞뒤에서 사건 발생 ㅡ> deque
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
deque<pll> mydeque;
ll n, l;
cin >> n >> l;
for (ll i = 1; i <= n; i++) {
ll x;
cin >> x;
ll s = mydeque.size();
if (s == 0) {
mydeque.push_back({ i, x });
}
else {
for (ll j = s-1; j >= 0; j--) {
if (mydeque[j].second < x) break;
else mydeque.pop_back();
}
mydeque.push_back({ i, x });
}
while (1) {
if (mydeque[0].first < i + 1 - l) mydeque.pop_front();
else break;
}
cout << mydeque[0].second << " ";
}
return 0;
}
'PS' 카테고리의 다른 글
백준 1517번 [버블 소트] (0) | 2025.02.12 |
---|---|
백준 11286번 [절댓값 힙] (0) | 2025.02.12 |
백준 1253번 [좋다] (0) | 2025.02.11 |
백준 10986번 [나머지 합] (0) | 2025.02.11 |
최단 경로 알고리즘 정리 (다익스트라, 플로이드 워셜, 벨만 포드) (0) | 2023.08.07 |