[I] I'm GM!

시간 제한1초메모리 제한512 MB

요약
대회들의 부분수열을 순서대로 골라 최종 레이팅을 최대로 만든다. 각 대회는 가중 평균을 반올림해 레이팅을 갱신한다.
난이도

어려움10점 중 9점

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

문제

다들 알고 있다시피, hibye1217은 포드코스에서 Grandmaster의 등급을 가지고 있다. 이를 기념할 겸 과거를 돌아보던 hibye1217은 문득 아래와 같은 궁금증을 가지게 되었다.

'만약 일부 대회를 계산에서 제외할 수 있다면 얼마나 더 높은 레이팅을 받을 수 있을까?'

포드코스의 레이팅의 계산 방식은 다음과 같다.

  • 유저의 레이팅은 00에서 시작한다.
  • 포드코스의 각 대회에는 레이팅 상수라는 두 정수 aa, bb가 존재한다. 이는 각 대회가 유저의 레이팅에 얼마나 큰 영향을 끼치는지를 의미한다. 레이팅 상수는 대회마다 다를 수 있다.
  • 유저가 대회를 치기 전의 레이팅이 정수 rr이었고, 대회에서의 퍼포먼스가 정수 pp였다고 하자. 그러면 유저의 새로운 레이팅은 ap+bra+b\displaystyle \frac{ap+br}{a+b}이 된다.
  • 만약 새로운 레이팅이 정수가 아니라면, 소수점 아랫부분이 0.50.5 미만이라면 내림하고 0.50.5 이상이라면 올림한다.

포드코스의 Grandmaster인 hibye1217은 NN개의 대회 중 00개 이상의 대회를 계산에서 제외하는 경우의 수는 2N2^N가지 경우나 있으니 쉽게 풀 수 없다는 결론을 냈다. 이제 포드코스의 Legendary Grandmaster인 여****러분들이 이 문제를 효율적으로 풀어 보자!

일부 대회를 계산에서 제외할 수는 있어도 대회 간의 순서를 바꿀 수는 없음에 유의하라.

입력

첫째 줄에는 hibye1217이 참여한 대회의 개수 NN이 주어진다. (1≤N≤500,000)(1 \le N \le 500\\,000)

둘째 줄부터 NN개의 줄에 걸쳐, i+1i+1번째 줄에는 hibye1217이 참여한 ii번째 대회의 레이팅 상수인 두 정수 aa, bb와 대회에서의 퍼포먼스인 정수 pp가 공백으로 구분되어 주어진다. (1≤a,b≤1,000;0≤p≤4,000)(1 \le a, b \le 1\\,000; 0 \le p \le 4\\,000)

출력

첫째 줄에 일부 대회를 계산에서 제외할 수 있을 때 hibye1217이 받을 수 있는 레이팅의 최댓값을 출력한다.

예제1

  1. 예제 1

    입력
    4
    1 2 1729
    7 1 3621
    2 1 2496
    3 5 2146
    
    예상 출력
    3240