Zum Hauptinhalt
DL 1
  • Startseite
  • Kalender
  • More
Deutsch ‎(de)‎
Čeština ‎(cs)‎ Deutsch ‎(de)‎ English ‎(en)‎ Français ‎(fr)‎ Русский ‎(ru)‎
Sie sind als Gast angemeldet
Login
DL 1
Startseite Kalender
Alle aufklappen Alle einklappen
  1. Cvičení z Programování II pro pokročilé
  2. Cvičení #10
  3. Volby

Volby

Abschlussbedingungen
Due: Mittwoch, 6. Mai 2020, 23:59

Mafiáni nakonec byli chytřejší, než v organizaci pro boj s organizovaným zločinem čekali. Když zjistili, že podle tradičních pravidel není žádný mafián vhodným kandidátem na kápa, rozhodli se nechat tradici tradicí a uspořádat demokratické volby. Každý mafián napsal na listeček jedno jméno – přezdívku mafiána, kterému dává svůj hlas. Všechny lístečky se pak shromáždily na jednom místě a teď se čeká na jejich spočítání. Pokud nějaký kandidát dostane aspoň polovinu všech hlasů, stane se novým kápem, v opačném případě budou muset mafiáni vymyslet nějaký jiný způsob, jak kápa zvolit.

Informátorovi se podařilo proniknout až do místnosti, kde se budou hlasy přepočítávat, a chtěl by zjistit, zda někdo získal nadpoloviční většinu hlasů a případně kdo. Zbývá mu proštrachat se úhledně poskládanou hromádkou volebních lístků na stole. Aby to nebylo tak snadné, má informátor k dispozici jen svou hlavu, ve které si dokáže zapamatovat jen konstantní množství informací. Aby se vyhnul odhalení, může navíc s hromádkou manipulovat jen velmi opatrně: vždy může nějaký volební lístek vzít, přečíst si ho, a pak ho musí zase vrátit na své místo. Pomůžete mu?

Řečeno formálněji, váš algoritmus zná celkový počet lístků N a kromě toho má k dispozici orákulum, kterého se může ptát na jméno na i-tém volebním lístku. Vaším cílem je zjistit, zda se nějaké jméno vyskytuje více než N/2-krát, přičemž smíte použít jen konstantní množství paměti. Jména jsou konstantně velká a umíte porovnávat, zda se dvě jména rovnají, ale už o nich nemůžete předpokládat nic dalšího (nejde například říct, zda je jedno jméno "menší" než druhé, nejdou hešovat atd.).

◄ Rostoucí matice
Nejmenší chybějící číslo ►
Contact site support
Sie sind als Gast angemeldet (Login)
Get the mobile app
Powered by Moodle