Filmová mánie
Zadání
Petr se těší na premiéru dlouho očekávaného filmu. Aby si film co nejvíce užil, chce jej sledovat v kinech co nejvícekrát. Má k dispozici programy všech kin ve městě a také zná časy potřebné pro přesun mezi jednotlivými kiny. Pro zjednodušení převedl všechny časy a datumy jednotlivých představení a přesunů na celočíselné násobky vhodné časové jednotky (může se jednat například o 30 minut nebo 1 hodinu). Rád by sestavil optimální plán návštěv kin podle následujících kritérií:
-
Maximalizovat počet shlédnutí filmu.
-
Mezi všemi plány optimálními z hlediska první podmínky, upřednostnit plán, který minimalizuje celkový čas potřebný na všechny přesuny mezi kiny.
Jakékoliv kino může být zvoleno jako výchozí pro celou akci. Stejně tak nezáleží, v kterém kině bude Petr sledovat film naposledy. Každé představení je potřeba absolvovat od začátku do konce. Délka promítání filmu je stejná ve všech kinech. Pokud doba potřebná na přesun z kina A do kina B je U časových jednotek a představení v kině A končí v čase T, potom je možné stihnout včas promítání filmu v kině B pouze tehdy, když film začíná v B nejdříve v čase T+U. Pokud jde o jídlo a spánek, nedělá si s tím Petr žádné starosti. Předpokládá, že může bez problémů jíst během představení a spát buď během přesunů hromadnou dopravou a nebo v kinech při čekání na začátek představení.
Úloha
Je dána délka filmu, doba potřebná na přesun pro každou dvojici kin a seznam začátků promítání filmu v každém z kin, vše vyjádřeno jako násobky zvolené časové jednotky. Úkolem je určit počet shlédnutí filmu a celkový čas strávený při přesunech mezi kiny v případě optimálního plánu.
Vstup
První vstupní řádek obsahuje dvě celá kladná čísla K a D oddělená mezerou. Číslo K je počet kin, číslo D je délka filmu.
Dalších K řádků vstupu reprezentuje řádky matice M, která udává časy potřebné na přesuny mezi kiny. Každý řádek matice sestává z K nezáporných celých čísel oddělených mezerou. Pro všechna 1 ≤ i, j, k ≤ K, prvek Mi,j reprezentuje dobu přesunu mezi kiny i a j. Platí Mi,i = 0, Mi,j = Mj,i (symetrie) a Mi,j ≤ Mi,k + Mk,j (trojúhelníková nerovnost).
Následuje posledních 2×K vstupních řádků reprezentujících seznamy začátků filmu v jednotlivých kinech, počínaje kinem 1 a konče kinem K. Seznam pro jedno kino je uložen na dvou po sobě jdoucích řádcích, kde první řádek obsahuje celé kladné číslo L, což je délka seznamu, a druhý řádek obsahuje L nezáporných čísel oddělených mezerou a uspořádaných vzestupně. V tomto případě každé číslo odpovídá začátku jednoho promítání filmu. Pokud S a U jsou dva po sobě jdoucí začátky, potom platí |S − U| ≥ D (promítaní filmu se v jednom kině nikdy nepřekrývají).
Buď Li délka seznamu začátků promítání filmu v kině i. Platí K ≤ 700, 1 ≤ D ≤ 6, TL=L1+ … + LK ≤ 4 × 105.