반응형

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

 

1946번: 신입 사원

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성

www.acmicpc.net

 

먼저 서류심사 성적으로 비교하는 최소 힙에 담아줍니다.

요소를 하나씩 꺼내면, 서류심사는 어차피 밀리고 있으므로, 면접시험 성적만 비교해주면 됩니다.

면접시험 성적마저 앞에 꺼내진 요소들의 최소값에 밀린다면, 두 성적이 앞에 꺼내진 사람보다 떨어지는 것이므로 탈락합니다.

 

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

int main() {
	priority_queue<pair<int, int>> pq;
	int t, n, a, b, res, mb;
	scanf("%d", &t);
	while (t-- && scanf("%d", &n)) {
		res = 0;
		for (int i = 0; i < n && scanf("%d %d", &a, &b);i++)
			pq.push({ -a, b });
		mb = pq.top().second;
		while (!pq.empty()) {
			b = pq.top().second; pq.pop();
			if (mb < b) res++;
			mb = min(b, mb);
		}
		printf("%d\n", n - res);
	}
}
반응형

'Algorithm' 카테고리의 다른 글

백준 11653 : 소인수분해  (0) 2021.11.14
백준 1939 : 중량제한  (0) 2021.11.14
프로그래머스 : 합승 택시 요금  (0) 2021.11.14
프로그래머스 : 디스크 컨트롤러  (0) 2021.11.14
프로그래머스 : 더 맵게  (0) 2021.11.14

+ Recent posts