A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre. Szeretnénk a számítógépünket felújítani, ezért vásárolnunk kell bele néhány alkatrészt, így a régieket az újakra tudjuk cserélni. A lehető legolcsóbban szeretnénk a felújítást elvégezni, így a legkevesebb alkatrészt szeretnénk megvásárolni (mindegyik azonos árban van). Viszont előfordulhat, hogy valamilyen összetartozó db alkatrész közül -et újra cserélünk, ekkor kötelezően a -adikat is ki kell cserélni. A boltban összesen () típusú alkatrész található (1-től -ig számozva). Az összetartozó csoportok mérete bármekkora lehet, de összes méretük legfeljebb 250 000 lehet. Tudjuk továbbá azt is, hogy az 1-es számú alkatrészt mindenképp ki kell cserélnünk. A program olvassa be a standard input első sorából -et és -t (a csoportok számát), majd a következő sorból a csoportban lévő alkatrészek számát, majd a csoportban lévő alkatrészek típusát darab 1 és közötti egész formájában. A két csoportnak akár közös elemei is lehetnek. A program írja a standard output első sorába a megvásárolandó alkatrészek minimális számát. Magyarázat: a példában az 1, 2, 3, 4-es számú alkatrészeket kell megvenni.
Pontozás és korlátok: A programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani az 1 mp futásidőkorláton belül. Beküldendő egy tömörített s98.zip állományban a program forráskódja (s98.pas, s98.cpp, ) az .exe és más, a fordító által generált állományok nélkül, valamint a program rövid dokumentációja (s98.txt, s98.pdf, ), amely a fentieken túl megadja, hogy a forrás mely fejlesztői környezetben fordítható. |