Počet bodov:
Program:  15b

Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Dávidovi na davidb@ksp.sk

Táto úloha voľne nadväzuje na úlohu Pohodlné kreslo z prechádzajúceho kola. Odporúčame si preto aspoň letmo prečítať jej zadanie aj vzorové riešenie. Na vyriešenie tejto úlohy to síce nie je nutné, myslíme si však, že vám to vie pomôcť.

Tomi už vďaka vám zistil, aký úžasný a krásny je jeho programovací jazyk Kreslo. Niečo mu v ňom však stále chýbalo. Nech sa snažil ako chcel, nedarilo sa mu v ňom nakresliť program, ktorý by zoradil čísla od najmenšieho po najväčšie. Uvedomil si, že na vyriešenie totho problému potrebuje viac ako 26 registrov, začal si ich preto číslovať. Aby nemusel meniť už existujúce príkazy Kresla, rozhodol sa, že hodnota v registri D bude závisieť od hodnoty v registri A (adresa). To znamená, že pre každú hodnotu v registri A predstavuje D úplne iný register. Túto zmenu pochopíte najlepšie na praktickej ukážke, ktorú sme pre vás pripravili: https://ksp.sk/~prask/specialne/4/2/3/index.html?ukazka=4.

Úloha

Kreslo je veľmi jednoduchý jazyk. Pracuje iba s celými číslami, ktoré vie načítavať zo vstupu a vypisovať na výstup. Aby sa Tomimu ľahko kreslilo, celý program je nakreslený do mriežky a každá inštrukcia zaberá jeden štvorec. Podrobnosti o tom, ako tento jazyk funguje a ako v ňom písať programy nájdete na ksp.sk/~prask/specialne/4/2/3/manual.pdf.

Našťastie, my môžeme používať elektronický editor, ktorý dokáže simulovať beh programu. Nájdete ho spolu s ukážkovými programami na ksp.sk/~prask/specialne/4/2/3/.

Vašou úlohou bude vyriešiť nasledujúce podúlohy a odovzdať ZIP súbor, ktorý obsahuje zdrojové kódy vašich riešení (dajú sa stiahnuť z editora). ZIP by mal obsahovať súbory 1.kr5.kr s vašimi riešeniami jednotlivých podúloh.

Podúlohy

  1. (2 bod) Na vstupe je číslo \(n\) a potom dva krát \(n\) čísel. Na výstup vypíšte najskôr druhých \(n\) čísel a po nich prvých \(n\) čísel.

Input:

3 1 2 3 4 5 6

Output:

4 5 6 1 2 3

Prvé číslo vstupu je \(n=3\). Následne je na vstupe prvá trojica \((1, 2, 3)\) a potom druhá trojica \((4, 5, 6)\). Na výstup preto najskôr vypíšeme druhú trojicu a až potom prvú.

  1. (2 body) Na vstupe je číslo \(n\) a potom \(n\) čísel. Za nimi sú dve čísla \(a\) a \(b\) \((1\leq a\leq b\leq n)\). Na výstup vypíšte súčet čísel medzi \(a\)-tym až \(b\)-tym číslom (vrátane).

Input:

5 1 4 3 3 5 2 4

Output:

10

Na vstupe je 5 čísel, my máme vypísať súčet čísel od druhého po štvrté. To znamená \(4+3+3=10.\)

  1. (3 body) Na vstupe je \(n\) čísel \((n\geq 2)\). Vypíšte najmenšie a druhé najmenšie číslo.

Input:

4 8 1 5 -6

Output:

-6 1
  1. (3 body) Na vstupe je \(n\) čísel \((n \geq 1)\). Vypíšte číslo, ktoré je na vstupe najviac krát. Môžete predpokladať, že na vstupe je také číslo vždy jednoznačné.

Input:

3 2 5 3 1 2 3

Output:

3
  1. (5 bodov) Na vstupe je \(n\) čísel \((n \geq 1)\). Vypíšte všetky tieto čísla zoradené od najmenšieho po najväčšie.

Input:

3 -1 2 7 -4 5 -6

Output:

-6 -4 -1 2 3 5 7

Odovzdávanie

Na odovzdávanie sa musíš prihlásiť

Otázky a diskusia

Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.