Gruppindelning | 프로그래밍의 벗 PivotOJ
PivotOJ

Gruppindelning

시간 제한: 1500ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2021 — kattBOJ 26955

문제

NN personer ska delas in i grupper. Varje person ska vara med i exakt en grupp, och varje grupp ska ha exakt en ledare. Varje person har tre heltal som beskriver deras ledaregenskaper: aia_i, bib_i och cic_i. Person nummer ii kan vara ledare för en grupp med xcix \le c_i personer (om ci=1c_i=1 måste person ii vara helt ensam i sin grupp om hen ska vara ledare). Gruppens styrka definieras då som heltalet aix+bia_i\cdot x + b_i. Din uppgift är att dela in personerna i grupper så att summan av styrkorna hos grupperna maximeras.

입력

Den första raden av indata innehåller ett heltal NN (1N40001 \le N \le 4000): antalet personer.

Därefter följer NN rader med tre heltal vardera: aia_i, bib_i och cic_i (109ai,bi109-10^9 \le a_i, b_i \le 10^9, 1ciN1 \le c_i \le N).

출력

Skriv ut ett tal: den största summa av styrkor som kan uppnås.

힌트

I det första exemplet kan den högsta styrka uppnås t.ex. genom att dela in personerna i tre grupper: en bestående av person 1 och 4 (med 1 som ledare), en med person 3 och 5 (med 3 som ledare), och en med person 2. Detta ger (102+7)+(11+20)+(52+10)=66(10 \cdot 2 + 7) + (-1 \cdot 1 + 20) + (5 \cdot 2 + 10) = 66 styrka. Testfallet skulle kunna finnas med i testgrupp 3.

I det andra exemplet kan högsta styrka uppnås t.ex. genom att dela in personerna i två grupper: en med personer 1, 2 och 3 (med 3 som ledare), och en med personer 4 och 5 (med 4 som ledare). Detta ger (102+20)+(113+30)=3(10 \cdot 2 + -20) + (11 \cdot 3 + -30) = 3 styrka. Testfallet skulle kunnas finnas med i testgrupp 4.

예제

예제 1

입력
5
10 7 2
-1 20 4
5 10 3
2 2 2
2 2 2
출력
66

예제 2

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

예제 3

입력
4
1000000000 1000000000 2
-1000000000 10 2
900000000 -1000000000 2
-20 -25 1
출력
3800000000
코드를 제출하려면 로그인하세요.