Koniec kola: 29. august 2022 23:59
13 dní
Počet bodov:
Popis:  12b
Program:  8b

Julka má veľa domácich úloh. Nebaví ju ale stále počítať komplikované príklady ručne. Rozhodla sa siahnuť po modernom pomocníkovi - kalkulačke. Zistila však, že na svojom iPade stále nemá predinštalovanú kalkulačku, ktorú by mohla použiť. Preto musela oprášiť svoju malú starú kalkulačku. Hneď pri prvom príklade ale nastal problém. Jej kalkulačka nedokáže vypočítať všetky výrazy. Viete jej pomôcť zistiť, ktoré výrazy dokáže Julka vyrátať?

Úloha

Julkina kalkulačka dokáže vykonávať iba základné operácie - sčítavanie, odčítavanie, násobenie a delenie. Ako bežná jednoduchá kalkulačka, ani táto nepodporuje zátvorky a operácie vždy vykonáva medzi posledným výsledkom a zadanou hodnotou. Teda, ak zadáme 1 + 2 =, na display-i svieti 3, pre pripočítanie čísla \(4\) stlačíme + 4 = a na display-i sa zobrazí 7.

V pamäti kalkulačky má Julka uložený nový svetový rekord počtu desatinných miest pre konštantu Pí, ktorý by bola škoda stratiť (teda pamäť kalkulačky nepoužívajte). Takisto, nemôžeme sa s medzivýsledkami spoliehať na Julkinu pamäť. Všetky operácie musia byť vykonané na kalkulačke a nesmieme si pamätať žiadne medzivýsledky “v hlave.”

Výraz je potrebné na kalkulačke vykonať tak, ako je zadaný na vstupe – teda, nemôže si ho Julka upraviť do iného tvaru, maximálne môže prehodiť poradie operandov. \(1 + 2\) môže zadať aj ako \(2 + 1\), ale napríklad \(3 + (1 - 2)\) nemôže zadať ako \(3 - (2 - 1)\), aj napriek tomu, že ide o výraz získaný ekvivalentnou úpravou.

Formát vstupu

Na vstupe sú dva riadky. V prvom riadku je číslo N - počet operácií a operandov na vstupe. V druhom riadku nasleduje N medzerou oddelených operandov (kladných celých čísiel) a operácií (+, -, *, /).

Matematické výrazy sú na vstupe zadané v tzv. prefixovom zápise (Polish notation). Na rozdiel od bežne používaného infixového zápisu, ktorý umiestňuje znamienka operácií medzi operandy (3 + 2), v prefixovom zápise ich píšeme pred operandami (+ 3 2). Napríklad 1 + 2 * 3 zapíšeme ako + 1 * 2 3. V prefixovom zápise nie je potrebné používať zátvorky, keďže poradie operácií je vždy zľava doprava: (1 + 2) * 3 zapíšeme ako * + 1 2 3.

Môžete predpokladať, že výraz na vstupe je validný.

Formát výstupu

Na výstup vypíšte ANO alebo NIE podľa toho, či dokáže Julka vyrátať zadaný výraz na svojej kalkulačke.

Hodnotenie

\(4\) sady vstupov. Platia v nich nasledovné obmedzenia:

Sada \(1\) \(2\) \(3\) \(4\)
\(3 \leq n \leq\) \(1\,000\) \(10\,000\) \(100\,000\) \(1\,000\,000\)

Príklady

Input:

5
+ + 1 2 3

Output:

ANO

Najprv zrátame 1 + 2, potom k výsledku pripočítame 3.

Input:

7
+ + 1 2 + 3 4

Output:

NIE

Potrebovali by sme si niekde pamätať medzivýsledok 1+2 alebo 3+4.

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.