Čtvrtá série sedmého ročníku KSP

Tyto úlohy pocházejí z desetileté ročenky KSP. Jejich řešení bohužel nemáme v elektronické podobě, takže na ně budete muset přijít sami.

Zadání úloh


7-4-1 Dokola


Je dáno pole A délky n obsahující celá čísla. Dále je dáno číslo d, 1≤ d ≤ n. Navrhněte algoritmus a napište program, který toto pole A cyklicky posune o d prvků vpřed, tj. pole bude obsahovat po řadě prvky

An-d,An-d+1,… ,An-1,A0,A1,… ,An-d-1.

Snažte se přitom používat co nejméně pomocné paměti.

Příklad: Pro A=(0,10,4,6,8,2,7), n=7, d=2 je výsledek cyklického posunu pole A=(2,7,0,10,4,6,8).


7-4-2 Konvexní obal


V rovině je dáno n bodů. Konvexní obal těchto bodů je nejmenší podmnožina těchto bodů taková, že všechny ostatní body leží uvnitř konvexního mnohoúhelníku určeného těmito body. Vaším úkolem je navrhnout algoritmus a napsat program, který pro vstupní množinu bodů zadaných pomocí svých souřadnic najde jejich konvexní obal.


7-4-3 Posloupnost


Na vstupu je dána uspořádaná posloupnost celých čísel a1, … , an. Navrhněte algoritmus a napište program, který zjistí, zda se ve vstupní posloupnosti vyskytují tři čísla x, x2, x3 a pokud ano, vytiskne je.

Příklad: Vstupní posloupnost je -5, -1, 2, 4, 5, 7, 8, 10; hledaná čísla jsou 2, 4, 8.


7-4-4 Největší čísla


Je dána čtvercová matice velikosti n ×n navzájem různých celých kladných čísel. Navrhněte algoritmus a napište program, který nalezne n největších čísel v této matici. Původní obsah matice nemusí zůstat zachován.