Brevoptimering | 프로그래밍의 벗 PivotOJ
PivotOJ

Brevoptimering

시간 제한: 2000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2019 — onlinekvalBOJ 20843
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

Progolympkommittén, bestående av NN personer, ska skicka ut kuvert med affischer för kvalet till alla skolor. För att göra processen snabbare har de delat upp uppgifterna som behöver göras. Uppgifterna är bland annat att skriva adresser, sätta på frimärken, lägga i affischerna och stänga kuverten. När en person är klar med ett kuvert skickas det vidare till någon annan person. Det går inte lika snabbt som de hade hoppats på, och därför undrar de vilka som skulle kunna jobba snabbare.

Varje person pp har en egen maximal produktionshastighet MpM_p kuvert per sekund. Om vi låter IpI_p vara antalet kuvert som skickas till person pp per sekund och låter UpU_p vara antalet kuvert den blir klar med per sekund så är Up=min(Ip,Mp)U_p = \min(I_p, M_p). En person blir alltså inte klar med fler än MpM_p brev per sekund, även om hen får fler att arbeta med. Varje person har dessutom att antal personer den skickar de kuvert hen blir klar med. Den behöver inte skicka lika mycket kuvert till varje person, utan varje person får en viss procent av kuverten pp skickar. De personer som ingen skickar kuvert till och som därmed är i början av produktionslinjen har Ip=I_p = \infty, och därmed Up=MpU_p = M_p (de har en oändlig hög med kuvert att ta av). Vissa personer skickar inte vidare några kuvert alls, utan lägger dem bara i hög bredvid sig när de är klara.

För vilka personer gäller att Up=MpU_p = M_p, det vill säga att de jobbar på sin maximala produktionshastighet?

입력

Den första raden innehåller ett heltal 1N1051 \le N \le 10^5, antalet personer. De nästa NN raderna beskriver personerna. Rad ii innehåller först heltalet MiM_i, den maximala produktionshastigheten för person ii (1Mi1051 \le M_i \le 10^5). Därefter kommer ett heltal kk, och sedan kk par av heltal jj ww, som betyder att person ii skickar ww procent av sina kuvert till person jj (1w1001 \le w \le 100, 1jN,ij1 \le j \le N, i \neq j). Inget jj kan förekomma mer än en gång på en given rad, och summan av ww:na på raden kommer att vara 100100, såvida inte k=0k = 0.

Låt SS beteckna summan av alla kk. Då gäller 0S1050 \le S \le 10^5.

Produktionskedjan är designad på ett sådant sätt att ingen person kan få tillbaka ett brev de redan arbetat med.

출력

Skriv ut en rad med alla ii som uppfyller Up=MpU_p = M_p, i stigande ordning.

Det garanteras att om Up=MpU_p = M_p så kommer detta stämma med marginal, mer specifikt IpMp>104I_p - M_p > 10^{-4}. Om tvärt om UpMpU_p \neq M_p så kommer det finnas marginal åt andra hållet: MpIp>104M_p - I_p > 10^{-4}.

힌트

Här följer tre grafer som representerar de tre exempelfallen. Varje person representeras av en nod. På varje kant är mängden kuvert som skickas utskrivet i enheten kps, kuvert per sekund.

Notera att i testfallsgrupp 11 skulle enbart exempelfall 11 kunna förekomma, i testfallsgrupp 22 enbart exempelfall 22, och i testfallsgrupp 33 enbart exempelfall 33. I testfallsgrupp 44 och 55 skulle alla tre exempelfall kunna förekomma.

[이미지 1]

Figure 1: Sample 11

[이미지 2]

Figure 2: Sample 22

[이미지 3]

Figure 3: Sample 33

예제

예제 1

입력
8
7 0
10 1 6 100
8 1 4 100
9 1 1 100
11 0
12 1 5 100
10 1 3 100
5 0
출력
1 2 3 7 8

예제 2

입력
10
16 3 2 50 4 25 6 25
9 2 9 75 5 25
2 1 8 100
5 0
1 0
2 2 3 90 7 10
1 0
1 0
5 1 10 100
6 0
출력
1 5 6 8 9

예제 3

입력
6
10 3 2 25 3 25 4 50
1000 1 5 100
1000 1 5 100
1000 1 6 100
1 1 6 100
1000 0
출력
1 5
코드를 제출하려면 로그인하세요.