Baekjoon/Gold

C++ / 백준 / 2075 / N번째 큰 수

GitHubSeob 2022. 3. 30. 12:50

문제

https://www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

www.acmicpc.net

문제풀이

단순히 모든 값을 입력받고 N번째 큰 수를 출력하려 했는데 메모리 초과가 났다.

그래서 N번째 까지는 값을 모두 입력받고, 그다음부터는 입력받을 값을 넣고 pop을 하여 우선순위 큐의 크기를 N으로 유지했다.

모든 값을 입력받았으면 top을 출력하면 된다.

우선순위 큐는 내림차순으로 정렬하기 위해 greater<int>를 넣었다.

 

코드

#include <iostream>
#include <queue>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int idx(0), N(0), num(0);
	priority_queue<int, vector<int>, greater<int>>pq;
	cin >> N;

	for (idx = 0; idx < N; ++idx) {
		cin >> num;
		pq.push(num);
	}
	for (idx; idx < N * N; ++idx) {
		cin >> num;
		pq.push(num);
		pq.pop();
	}

	cout << pq.top();
}