Laiko ribojimas: 1s
Atminties ribojimas: 64MB
Duomenų failas: darbai.in
Rezultatų failas: darbai.out
Miesto tvarkymas
Savivaldybė nutarė sutvarkyti miestą ir kartu padidinti gyventojų užimtumą. Buvo sudarytas reikalingų atlikti darbų sąrašas. Kiekvienas specialistas išrikiavo darbus tokia tvarka, kokia, jo nuomone, yra geriausia juos atlikti. Pagal šias rekomendacijas pradėtas sudarinėti darbų grafikas – kiekvienam darbui priskiriama atlikimo diena. Kadangi pasiūlytos darbų rikiuotės nesutapo, buvo nutarta laikytis tokios kompromisinės taisyklės. Jei darbas A nors vienoje pateiktoje rikiuotėje yra prieš darbą B, tai darbas B turi būti atliktas bent viena diena vėliau nei darbas A arba abu darbai gali būti atlikti tą pačią dieną. Kitaip tariant, darbas B negali būti atliktas ankstesnę dieną nei darbas A. Aišku, kad pagal tokią taisyklę bent vienu būdu darbų grafiką sudaryti visada galima: visi darbai gali būti atliekami tą pačią dieną, tačiau savivaldybė nori, kad užimtumas būtų kuo didesnis ir kad darbai vyktų kuo ilgiau.
Parašykite programą, kuri išdėstytų numatytus darbus kuo didesniame dienų skaičiuje nepažeisdama darbų rikiavimo taisyklės.
Pradiniai duomenys
Pirmoje eilutėje yra du sveikieji skaičiai N () ir R (), atskirti tarpu. N nurodo, kiek yra darbų, R - kiek yra pasiūlytų rikiavimų. Darbai numeruojami skaičiais nuo 1 iki N. Kitose R eilučių yra išvardijami pasiūlyti darbų rikiavimai, po vieną rikiavimą kiekvienoje eilutėje. Kiekvienoje šių eilučių yra išvardinti visų darbų numeriai atskirti tarpais ir numerių tvarka nusako pasiūlytą rikiavimą.
Rezultatai
Pirmoje eilutėje turi būti įrašytas vienas sveikas skaičius – per kiek dienų bus atliekami darbai. Toliau eina tiek eilučių, kiek yra dienų, eilučių tvarka atitinka dienų tvarką. Kiekvienoje dienos eilutėje įrašytas skaičius, kiek darbų priskirta tai dienai, ir toliau, atskiriant skaičius tarpu, didėjimo tvarka išvardinti priskirtų darbų numeriai.
Pavyzdys
Duomenys | Rezultatai |
---|---|
7 2 5 4 3 2 1 6 7 4 5 1 3 6 2 7 |
3 2 4 5 4 1 2 3 6 1 7 |