문제

 

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

 

1781번: 컵라면

상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라

www.acmicpc.net

 

내가 푼 코드

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

bool mysort(const pair<int, int>& a,
	const pair<int, int>& b)
{
	if(a.first == b.first)
		return (a.second > b.second);
	else
		return (a.first < b.first);
}

int main() {
	int N, S, E;
	cin >> N;

	vector<pair<int, long long int>> v(N);
	priority_queue<long long int, vector<long long int>, greater<long long int>> con;

	for (int i = 0; i < N; i++)
	{
		cin >> S >> E;
		v[i] = make_pair(S, E);
	}	

	sort(v.begin(), v.end(), mysort);

	int num = 0;
	for (int i = 0; i < N; i++)
	{
		if (v[i].first > num)
		{
			num = v[i].first;
		}
		else
		{
			continue;
		}

		for (int j = i; j < i + num; j++)
		{
			if(j == N)
				break;

			if (num == v[j].first)
			{
				int con_size = con.size();
				if (con_size < num)
				{
					con.emplace(v[j].second);
				}
				else
				{
					if (con.top() < v[j].second)
					{
						con.pop();
						con.emplace(v[j].second);
					}
					else
					{
						i = j;
						break;
					}
				}
			}
			else
			{
				i = j - 1;
				break;
			}
		}
	}

	int sum = 0;
	while (!con.empty())
	{
		sum += con.top();
		con.pop();
	}

	cout << sum << endl;
	return 0;
}
Posted by pi92

블로그 이미지
pi92

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.5
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함