문제

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

 

1927번: 최소 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

풀이

최소힙 기본연습문제이다. 

C++ 의 Priority_queue를 활용하였다. 

최소 힙 같은경우  priority_queue<int,vector<int>,greater<int>> 를 사용하면 된다. 

 

코드

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

priority_queue<int, vector<int>, greater<>> pq;
vector<int> result;
int  main() {
	int N;
	cin >> N;

	for (int i = 0; i < N; i++) {
		int a;
		cin >> a;
		if (a == 0) {
			if (pq.empty()) {
				result.push_back(0);
			}
			else {
				result.push_back(pq.top());
				pq.pop();
			}


		}
		else {
			pq.push(a);
		}
		



	}
	for (int j = 0; j < result.size(); j++) {
		cout << result[j] << '\n';

	}



	return 0;
}

+ Recent posts