[C++]BOJ 1946 - 신입 사원

[C++]BOJ 1946 - 신입 사원

문제에 헷갈리는 문장이 있었다.

“다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다.”

???????????

한참을 보다가 다음 줄 보고 이해했다.

“즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다.”

ㅇㅎ


이전에 회의실 배정인가 거기서 썼던 pair를 쓰면 편하겠단 생각이 들었다.

first는 어차피 오름차순으로 정렬되니 다음 사람의 점수보다 무조건 낮을 것이고 그 와중에 second까지 작으면 조건에 의해 걔는 탈락이다.

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
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int, int> p;
int tk[21];
int main()
{
p v[100001];
short t;
int n;
cin >> t;
for(int i = 0; i < t; i++)
{
cin >> n;
for(int j = 0; j < n; j++)
{
cin >> v[j].first >> v[j].second;
}
sort(v, v+n);
int po = v[0].second;
int p = n;
for(int j = 0; j < n; j++)
{
if(po < v[j].second) p--;
else po = v[j].second;
}
tk[i] = p;
}
for(int i = 0; i < t; i++)
cout << tk[i] << endl;
}

왜 배열명을 tk로 썼는지 기억이 가물가물한데 아마 테스트 케이스를 줄여서 tk라 한듯하다.

근데 놀랍게도 test case를 굳이 줄인다면 tc이다.

졸았나보다.