[BOJ 31068] 균형 잡힌 등급

View as PDF

Submit solution

Points: 4
Time limit: 1.0s
Memory limit: 1G

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

서울과학고의 자료구조 수업은 $N$명의 학생이 수강한다. 자료구조 수업은 중간고사와 기말고사가 존재하며, 각 시험의 점수는 $0$ 이상 $10^6$ 이하의 정수이다.

선생님은 학생들의 시험 점수를 바탕으로 학생들에게 '상', '중', '하' 중 하나의 등급을 부여하려고 한다. 이때 부여하는 등급은 다음 두 조건에 맞아야 한다.

  • 각 등급은 적어도 한 명의 학생이 받아야 한다.
  • 더 높은 등급을 받은 학생은 더 낮은 등급을 받은 학생보다 중간고사, 기말고사 점수가 모두 더 높아야 한다.

선생님은 불균형도를 최소화하도록 등급을 매기고자 한다. '상', '중', '하' 등급을 받은 사람의 수를 각각 $a$, $b$, $c$라고 하자. 이때 불균형도는 $\max(a,b,c) -\min(a,b,c)$로 정의된다.

가능한 불균형도의 최솟값을 구하여라.

입력 형식

첫 줄에 학생의 수 $N$이 주어진다.

그 뒤 $N$개의 줄이 주어진다. 이들 중 $i$번째 줄에는 $i$번 학생의 중간고사와 기말고사 점수 $A_i$와 $B_i$가 띄어쓰기를 사이에 두고 주어진다.

출력 형식

가능한 불균형도의 최솟값을 출력한다.

만약 선생님이 조건에 맞게 등급을 부여하는 것이 불가능하다면, -1을 출력한다.

예제 입력 1

3
1 10
2 20
3 30

예제 출력 1

0

예제 입력 2

8
1 2
2 1
3 4
4 3
5 6
6 5
7 8
8 7

예제 출력 2

2

예제 입력 3

5
2 4
3 1
5 6
8 2
7 3

예제 출력 3

-1

힌트

$\max(a,b,c)$와 $\min(a,b,c)$는 각각 $a$, $b$, $c$ 중 최댓값과 최솟값을 의미한다.


Comments

There are no comments at the moment.