백준 14235 c++

magicdrill·2024년 7월 31일

백준 문제풀이

목록 보기
406/673

백준 14235 c++

첫 시도에서 문제를 대충 읽고 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;
}

0개의 댓글