첫 시도에서 문제를 대충 읽고 queue를 사용했다가 틀렸다.
이때, 크기순으로 정렬된 priority_queue를 사용하여 풀이했다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
void input_data(vector<vector<int>> &santa_visit)
{
int n, i, a, j, t;
cin >> n;
for (i = 0; i < n; i++)
{
vector<int> temp;
cin >> a;
temp.push_back(a);
for (j = 0; j < a; j++)
{
cin >> t;
temp.push_back(t);
}
santa_visit.push_back(temp);
}
return;
}
void find_answer(vector<vector<int>>& santa_visit)
{
int i, j, k;
priority_queue <int> q;
for (i = 0; i < santa_visit.size(); i++)
{
if (santa_visit[i][0] == 0)
{
if (q.empty())
{
cout << "-1" << "\n";
}
else
{
cout << q.top() << "\n";
q.pop();
}
}
else
{
for (j = 1; j < santa_visit[i].size(); j++)
{
q.push(santa_visit[i][j]);
}
}
}
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<vector<int>> santa_visit;
input_data(santa_visit);
find_answer(santa_visit);
return 0;
}