https://www.acmicpc.net/problem/2075
처음엔 그냥 모든 수를 다 priority queue에 받아서 마지막에 pop하면서 N번째 찾으려고 했는데
그렇게 하니까 메모리 초과가 났음... 모든 원소를 전부다 pq에 넣으면 사이즈가 터진다는 걸 알고
pq의 사이즈가 N보다 작을때는 바로 push하고, pq의 사이즈가 N일때는 top을 pop해주고 push하는 식으로 구현함
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
int N;
priority_queue<int, vector<int>, greater<int>> pq;
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> N;
int temp, ret;
for (int i = 0; i < N*N; i++) {
cin >> temp;
if (pq.size() < N) pq.push(temp);
else {
if (pq.top() < temp) {
pq.pop();
pq.push(temp);
}
}
}
cout << pq.top();
}
'알고리즘' 카테고리의 다른 글
[boj6884/Java] 소수 부분 수열 (0) | 2023.07.17 |
---|---|
[boj11140/Java] LOL (0) | 2023.07.17 |
[boj2599/c++] 짝 정하기 (1) | 2023.05.05 |
[boj11728/c++] 배열 합치기 (0) | 2023.05.04 |
[boj4963, boj15652/c++] 섬의 개수, N과 M(4) (0) | 2023.05.02 |