문제 

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

 

12018번: Yonsei TOTO

연세대학교 수강신청이 얼마 전부터 바뀌어, 마일리지 제도로 바뀌었다. 이 제도는 각각의 학생들에게 마일리지를 주어 듣고 싶은 과목에 마일리지를 과목당 1~36을 분배한다. 그리고 모두 분배

www.acmicpc.net

 

내가 푼 코드

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

int main() {
	int N, M, cnt = 0;
	priority_queue<int, vector<int>, greater<int>> que;
	cin >> N >> M;
    
	for (int i = 0; i < N; i++) {
		int p, l, min;
		priority_queue<int, vector<int>, less<int>> temp;
		cin >> p >> l;
		for (int i = 0; i < p; i++)
		{
			int list;
			cin >> list;
			temp.emplace(list);
		}
        
		int size = temp.size();
		if (size < l) 
		{
			min = 1;
		}
		else
		{
			for (int i = 0; i < l - 1; i++)
			{
				temp.pop();
			}
			min = temp.top();
		}
		que.emplace(min);
	}

	for (int i = 0; i < N; i++)
	{
		int top = que.top();
		if (M < top)
		{
			break;
		}
		M -= top;
		que.pop();
		cnt++;
	}
	cout << cnt << endl;
    
	return 0;
}
Posted by pi92

블로그 이미지
pi92

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.7
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

최근에 올라온 글

최근에 달린 댓글

글 보관함