두 팀으로 나누기

면접 대비

시간 제한2초메모리 제한1024 MB

요약
N명을 두 팀으로 나눠 각 팀의 (최소 팀워크 점수) 곱하기 (실력 점수 합) 값의 차이를 최소로 만든다.
난이도

보통10점 중 7점

유형
동적 계획법, 정렬, 그리디, 구현
정답자
아직 제출이 없습니다

문제

NN명의 사람들이 모여서 경기를 하려고 한다. 각 사람은 팀워크 점수 A_iA\_i 와, 실력 점수 B_iB\_i를 가지고 있다. 점수는 모두 정수이다.

사람들을 적절히 두 팀으로 나누려고 한다. 이때, 팀 SS의 능력은 다음과 같이 정의된다.

min⁡_i∈S(A_i)×∑_i∈SB_i\min\_{i\in S}(A\_i) \times \sum\_{i\in S}{B\_i}

즉, 팀원 중 가장 낮은 팀워크 점수와 모든 팀원의 실력 점수 합을 곱한 것이 팀의 능력이 된다.

고민하던 사람들은 세계적인 감독 광재에게 물어보기로 했다. 광재는 명성에 걸맞게 최적의 방법을 찾으려 한다. 광재를 도와 두 팀의 능력 차이가 최소가 되는 방법을 찾아보자.

두 팀의 구성원의 수가 같을 필요는 없고, 각 팀에는 한 명 이상의 선수가 포함되어야 한다.

입력

첫 번째 줄에 사람의 수 NN이 주어진다. (2≤N≤1000)(2 ≤ N ≤ 1000)

두 번째 줄부터 NN줄 동안 각각의 팀워크 점수 A_iA\_i 와, 실력 점수 B_iB\_i 가 주어진다. (1≤A_i,B_i≤100)(1 ≤ A\_i, B\_i ≤ 100)

출력

두 팀의 능력 차이가 최소가 되게 나눴을 때 능력 차이를 출력한다.

예제1

  1. 예제 1

    입력
    5
    3 7
    5 9
    10 2
    7 3
    6 8
    
    예상 출력
    1