안녕하세요. 오늘은 크리스마스 선물을 배달할 거예요.

문제

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

아이디어

우선순위 큐를 쓰면 쉽습니다.
0이 주어지면 top을 출력하고 아니면 수를 다 pq에 넣으면 됩니다.

소스코드

#include <iostream>
#include <queue>
#define ll long long
using namespace std;


int main(void)
{
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	ll N, i, x, y;
	priority_queue <ll> pq;

	cin >> N;
	for (i = 1; i <= N; i++)
	{
		cin >> x;
		if (x == 0)
		{
			if (pq.size())
			{
				cout << pq.top() << "\n";
				pq.pop();
			}
			else cout << "-1\n";
		}
		else
		{
			while (x--)
			{
				cin >> y;
				pq.push(y);
			}
		}
	}
}


감사합니다.

0개의 댓글