Mili nasi riesitelia,
aby ste si nemysleli, ze sme na vas zabudli, sme tu opat, tentoraz so zadaniami tretieho kola. Chceme vam v nich popriat vela dobrych znamok na vysvedceni, squelu lyzovacku no a samozrejme kopu casu hodnotne straveneho nad nasimi zadaniami. A aby sme trochu podporili vase snazenie, vyhlasujeme, ze prvych niekolko riesitelov ze niekolko najlepsich riesitelov sa moze tesit na zaujimave ceny (Vinko napriklad slubil kupit v Kanade knizku Cormen, Leiserson, Rivest: Introduction to Algorithms, ktora je na prvu cenu ako stvorena). No a samozrejme, vase riesenia ocakavame do 6. marca 2000.
"Stavme sa, ze vypijem 10 kofol, ak mi ich niekto kupi," navrhne Miso. "Dobre, ale ak prehras, tak ty mne kupis 15 kofol! Nech sa mi vratia aj s urokmi," suhlasi Brano. "Plati?" "Plati." A tak sa poberu k vycapu. Prva, druha, tretia kofola... to je este v pohode. Stvrta, piata, siesta... zacina byt problem. Siedma, osma... Miso je uz zeleno- modry a vzdava sa. "Prehral si! Teda mi uz visis 43 kofol."
A takto to v KSPackych kruhoch chodi uz dlhe tyzdne. Kazdy je niekomu dlzny mnozstvo kofol. Pomaly ale iste sa v zlozitych dlzobnych vztahoch uz prestavaju vsetci vyznat. Preto sa rozhodli, ze sa dnes vyrovnaju. Lenze, ked vypiju takych 50 kofol v takejto zime, to im hrozi podchladenie, ba az smrt. A co by bolo potom? Vtom skrsla Davidovi v hlave skvostna idea (aj to sa niekedy stava) (tzv. bezkofolove vyrovnanie):
Nech dlhuje KSPak A KSPakovi B K1 kofol a B dlhuje C K2 kofol. Potom mozu svoje dlhy upravit tak, aby B vypil o X=min(K1,K2) kofol menej. Potom A bude dlzit B iba K1-X a B bude dlzit C K2-X kofol. Zaroven vsak bude KSPak A dlzit KSPakovi C o X kofol viac. Ak sa takto stane, ze niekto dlzi nieco sam sebe (A=C), tak si nebude samozrejme nic kupovat.
Na prvom riadku vstupu su dve cele cisla N - pocet KSPakov a M - pocet dlzob. Potom nasleduje M riadkov. Na kazdom su tri cele kladne cisla A, B, K, co znamena: KSPak A je dlzny KSPakovi B prave K. kofol. Vasou ulohou napisat program, ktory zisti, kolko minimalne kofol musia dokopy vypit a vypise jeden mozny zaverecny stav, kto komu kolko kofol dlzi.
3 4 1 2 4 2 3 10 3 1 3 3 2 2Vystup:
Pocet vypitych kofol: 5 1 3 1 2 3 4
Vystup:
134
(Treba stlacit tlacidla pre dva listky za 35, jeden za 17, dva za 6 a nakoniec este jeden za 35 korun.)
"Ked mi uz tak velmi chces pomahat, tak roztried tamtie skrutky!", povedal otec ukazujuc na velku kopu skrutiek a matic v rohu garaze. Tomas bol cely nestastny. Rad otcovi vo vsetkom pomahal. Nemohol za to, ze vsetko, coho sa dotkol, sa hned lamalo a kazilo. Otec sa vacsinou nezlostil, aj ked casto musel robit vsetko odznova. Tentoraz to ale vyzeralo vazne. Vyraz v otcovej tvari hovoril jednoznacne: "Uz ziadne kazenie, prekazanie a praca navyse. Teraz ta zamestnam pracou, pri ktorej nic nepokazis." Tomas teda smutne pozrel na kopu v rohu a pustil sa do prace. "Presne ako Popoluska," pomyslel si. "Popoluske prisli pomoct holuby. Lenze mne nikto nepomoze. Ibaze by..."
Ulohou vasho programu je najst ku kazdej skrutke nast jej zodpovedajucu maticu. Tomas chce mat tuto robotu rychlo hotovu, preto by ocenil, keby sa ho program pytal co najmenej otazok, avsak dolezitejsie je, aby mu program vyhodil spravny vysledok.
1. skrutka a 2. matica? OK 2. skrutka a 1. matica? VACSIA MATICAVystup
Stal Babylon, najslavnejsia to risa. I jedneho dna povedali si Babyloncania: "Nam uz zit na zemi neprinalezi. Az po same nebo vezu postavime, a potom tam zit budeme!". Nedbali oni varovania vestca, ze kto sa Bohu rovnat chce, kruto potrestany bude. Kazdy z Babyloncanov sa domov pobral, i vsetky tyce, co doma nasiel, na namestie doniesol. Ked uz vsetky tyce pokope boli, zacali z nich konstrukciu veze stavat. Lenze co to? Tyce boli tak roznych dlzok, ze nik, ani ten najmudrejsi z nich (Cpt. John Sheridan), schopny nebol najst tri take, co by strany trojuholnika tvorili. A tak hladali, hladali, no stale nenachadzali a stavbu zacat nemohli.
A tak by sa im zisiel program, ktory by tento problem riesil za nich. (A tiez by sa im zisiel pocitac...)
Poznamka: Dobre sa zamyslite nad casovou a pamatovou zlozitostou vasho programu...
Vstup:
N=5
1.7 4.9 51.0 174.9 4.957
Vystup:
ANO
Zlatokopi z Vysnej Klondiky uz po sedem rokov radi chodievaju do hostinca v Dolnom Kelcove posilnovat sa ohnivou vodou, hrat hazardne hry a uzatvarat stavky. Aj Santo a Banto tam pravidelne radi chodia. Tentokrat sa im opat podarilo vyhrat stavku s krcmarom a za odmenu im krcmar postavil na stol do kruhu mnoho flias ohnivej vody rozneho objemu a povedal: "Z tychto flias pite kolko vam hrdlo raci, ale dodrzujte kulturu pitia!"
Santo sa uz-uz chcel rozbehnut ku flasiam, ale Banto ho zadrzal. "Nezabudaj na tie prihluple krcmarove pravidla, nemozeme pit hocijako, nevypite flase musia v kazdom okamihu tvorit suvisly usek. Musime si davat pozor, inac nas opat vyhodi! A budeme sa pekne striedat. Jednu flasu ty, jednu ja, az kym sa nam vsetky neminu."
a) Je dane n a 2n roznych celych cisel od 1 po 2n reprezentujucich objemy flias po rade v kruhu. Napiste program, ktory bude radit Santovi (ktory je prvy na tahu), ktoru flasu ma kedy vypit tak aby dokopy vypil viac ohnivej vody ako Banto. Vas program by mal v kazdom tahu vypisat, ktoru flasu ma Santo vypit a nacitat, ktoru flasu vypil Banto. Mozete predpokladat, ze Banto hra podla pravidiel.
b) Napiste program, ktory nacita lubovolnu legalnu poziciu (t.j. taku, ktora mohla vzniknut postupnostou legalnych tahov), a bude striedavo radit hracovi na tahu ktoru flasu ma vypit a nacitavat tahy supera. Na konci by mal program vypisat, kto kolko vypil a kto vypil viac.
N=3 flase: 2 6 3 1 5 4 Santo, vypi 6dl flasu. Banto vypil: 3dl Santo, vypi 2dl flasu. Banto vypil: 4dl Santo, vypi 5dl flasu. Banto vypil: 1dl Dokopy Santo vypil 13dl ohnivej vody, ale Banto len 8. Chudak Banto.b)
N=3 flase: 0 6 3 1 0 0 (prazdne flase oznacene nulou) Santo uz vypil: 6 Banto uz vypil: 5 Na tahu je: Banto Banto, vypi 6dl flasu. Santo vypil: 3dl Banto, vypi 1dl flasu. Dokopy Santo vypil 9dl ohnivej vody, ale Banto az 12. Chudak Santo.