티스토리 뷰
#include <iostream>
#include <queue>
using namespace std;
int value[1000000];
int nge[1000000];
priority_queue<pair<int, int> > q;
int main(void)
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int vol = q.size();
int num;
scanf("%d", &num);
value[i] = num;
nge[i] = -1;
for (int j = 0; j < vol; j++) {
int idx = q.top().second;
int siz = -q.top().first;
if (siz >= num)
break;
q.pop();
nge[idx] = num;
}
q.push({ -num, i });
}
for (int i = 0; i < n; i++)
printf("%d ", nge[i]);
return 0;
}
총 소요시간 : 28분
디버깅 내용 :
- Queue를 사용해 시간초과남. Priority Queue(Heap)를 사용하도록 변경.
- 오큰수를 찾을 때 크거나 같은 수를 찾게해 틀렸음(>=). 큰 수를 찾도록 변경(>).
'프로그래밍 > 문제풀이' 카테고리의 다른 글
[BOJ] 10799 쇠막대기 (0) | 2020.06.13 |
---|---|
[BOJ] 14891 톱니바퀴 (0) | 2020.05.20 |
[BOJ] 1107 리모컨 (0) | 2020.05.20 |
[BOJ] 10971 외판원 순회2 (0) | 2020.05.15 |
[BOJ] 11051 이항 계수 2 (0) | 2020.02.28 |
댓글