아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

그룹 나누기

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

난이도

아직 분류되지 않았습니다

정답자
아직 제출이 없습니다

문제

NN명의 사람을 여러 그룹으로 나눈다. 각 사람은 정확히 한 그룹에 속하고, 각 그룹에는 정확히 한 명의 리더가 있다. 사람 ii는 리더로서의 능력을 나타내는 정수 a_ia\_i, b_ib\_i, c_ic\_i를 가진다. 사람 ii는 x≤c_ix \le c\_i를 만족하는 xx명의 그룹에서 리더가 될 수 있다. c_i=1c\_i=1이면 사람 ii는 리더가 되려면 그룹에 혼자 있어야 한다. 이 그룹의 강도는 정수 a_i⋅x+b_ia\_i\cdot x + b\_i이다. 그룹들의 강도 합이 최대가 되도록 사람들을 나누어라.

입력

첫 줄에 사람의 수를 나타내는 정수 NN(1≤N≤40001 \le N \le 4000)이 주어진다. 이어지는 NN개의 줄에는 각각 정수 a_ia\_i, b_ib\_i, c_ic\_i(−109≤a_i,b_i≤109-10^9 \le a\_i, b\_i \le 10^9, 1≤c_i≤N1 \le c\_i \le N)가 주어진다.

출력

그룹 강도 합의 최댓값을 정수 하나로 출력한다.

힌트

첫 번째 예제에서는 사람들을 세 그룹으로 나누면 최대 강도를 얻을 수 있다. 예를 들어 사람 1과 4의 그룹(리더는 1), 사람 3과 5의 그룹(리더는 3), 사람 2의 그룹으로 나눌 수 있다. 이때 강도는 (10⋅2+7)+(−1⋅1+20)+(5⋅2+10)=66(10 \cdot 2 + 7) + (-1 \cdot 1 + 20) + (5 \cdot 2 + 10) = 66이다. 이 테스트 케이스는 테스트 그룹 3에 포함되어 있을 수 있다.

두 번째 예제에서는 사람들을 두 그룹으로 나누면 최대 강도를 얻을 수 있다. 예를 들어 사람 1, 2, 3의 그룹(리더는 3)과 사람 4와 5의 그룹(리더는 4)으로 나눌 수 있다. 이때 강도는 (10⋅2+−20)+(11⋅3+−30)=3(10 \cdot 2 + -20) + (11 \cdot 3 + -30) = 3이다. 이 테스트 케이스는 테스트 그룹 4에 포함되어 있을 수 있다.

예제3

  1. 예제 1

    입력
    5
    10 7 2
    -1 20 4
    5 10 3
    2 2 2
    2 2 2
    
    예상 출력
    66
    
  2. 예제 2

    입력
    5
    6 -40 4
    7 -40 4
    10 -20 2
    11 -30 3
    12 -10 1
    
    예상 출력
    3
    
  3. 예제 3

    입력
    4
    1000000000 1000000000 2
    -1000000000 10 2
    900000000 -1000000000 2
    -20 -25 1
    
    예상 출력
    3800000000