확실한 베팅

두 결과에 대한 배당들 가운데 일부를 골라 두 결과 각각의 총 수익에서 건 수를 뺀 값의 최솟값이 최대가 되도록 한다.

보통6그리디정렬수학아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

베팅에서 운은 큰 비중을 차지한다. 어떤 사람은 베팅 대상을 잘 알아서 적중률과 수익을 높인다. 여기서는 다른 방법을 쓴다.

같은 결과를 두고도 업체마다 서로 다른 배당률을 제시한다. 배당률이 xx라는 말은 1유로를 걸고 결과를 맞히면 xx유로를 돌려받는다는 뜻이다. 결과를 맞히지 못하면 아무것도 돌려받지 못한다. 결과와 상관없이 베팅 한 건마다 1유로를 낸다. 여러 곳에 영리하게 나눠 걸어서 어떤 결과가 나와도 이익을 확정할 수 있다면, 그 확정 이익을 최대로 키우고 싶다.

베팅 대상 경기의 결과는 두 가지다. 서로 다른 배당률을 제시하는 업체가 nn개 있다. ii번째 업체가 첫 번째 결과에 제시한 배당률을 aia_i, 두 번째 결과에 제시한 배당률을 bib_i라고 하자. 제시된 배당률 가운데 어떤 부분집합에도 베팅할 수 있고, 한 업체에서 두 결과 모두에 걸 수도 있다. 다만 모든 베팅 금액은 정확히 1유로이고, 같은 업체의 같은 결과에 두 번 이상 걸 수는 없다.

첫 번째 결과가 나오면 첫 번째 결과에 베팅한 업체 ii마다 aia_i유로를 받는다. 두 번째 결과가 나오면 두 번째 결과에 베팅한 업체 ii마다 bib_i유로를 받는다. 두 경우 모두 베팅 한 건마다 1유로를 이미 낸 상태다.

최적으로 베팅했을 때 결과와 상관없이 보장되는 이익의 최댓값을 구하라.

입력

첫 줄에 업체의 수 nn이 주어진다. 다음 nn개 줄에는 공백으로 구분된 실수 aia_ibib_i가 주어진다. 각각 ii번째 업체가 첫 번째 결과와 두 번째 결과에 제시한 배당률이다. 배당률은 소수점 아래 최대 4자리까지 주어진다.

출력

보장되는 이익의 최댓값을 소수점 아래 정확히 4자리로 반올림해 한 줄에 출력한다.

제한

  • 1n1000001 \le n \le 100000
  • 1.0ai,bi1000.01.0 \le a_i, b_i \le 1000.0

힌트

첫 번째 예제에서는 1번 업체의 두 번째 결과, 3번 업체와 4번 업체의 첫 번째 결과에 거는 것이 최적이다. 베팅은 세 건이므로 3유로를 낸다. 첫 번째 결과가 나오면 1.6+1.93=0.51.6 + 1.9 - 3 = 0.5유로를 벌고, 두 번째 결과가 나오면 3.73=0.73.7 - 3 = 0.7유로를 번다. 따라서 어떤 결과가 나와도 0.5유로가 보장된다.