728x90
해결방법
세그먼트 트리로 안 풀렸다.세그먼트 트리로는 정말 힘들다그래서 우선순위큐로 풀었다. 근데 이것도 겨우겨우 시간 통과했다.
우선순위큐는 최대값을 반환하므로 최소값을 찾기 위해 {-값, index}를 input으로 받는다.
priority_queue<pair<int,int>> pq; // { -값, index }
그리고 최솟값의 인덱스가 i - L + 1라면, pq.top().first를 출력하고 아니라면 해당 인덱스가 나올때까지 반복한다.
전체코드
#include<iostream>
#include<queue>
using namespace std;
priority_queue<pair<int, int>> pq;
int N, L, A;
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> N >> L;
for (int i = 1; i <= N; ++i) {
cin >> A;
pq.push({ -A, i });
while (pq.top().second < i - L + 1) pq.pop();
cout << -pq.top().first << ' ';
}
return 0;
}
728x90
'Algorithm > BOJ' 카테고리의 다른 글
1965번 상자넣기 (0) | 2021.05.19 |
---|---|
공유기 설치 - 2110번 (0) | 2019.06.09 |
탑 - 2493번 (0) | 2019.05.19 |
나머지 합 - 10986번 (0) | 2019.05.19 |
1931번 - 회의실 배정 (0) | 2019.05.05 |
댓글