Znova je to tu. Začal nám nový ročník KSP a s tým spojené prvé kolo. Zahrievajú sa servery, vedúci si pripravujú červené perá vo svojich obľúbených softvéroch na editovanie PDF a distribúcia zadaní je v plnom prúde. Začal pracovať aj náš tím odvážnych webových vývojárov. Zhodli sa, že v novom roku treba softvér aj testovať.
Zaručene najdôležitejšou časťou celej série je výsledkovka. Zodpovední vývojári preto chcú pripraviť test, ktorý overí, či daná vygenerovaná výsledkovka mohla vzniknúť korektným spôsobom. Zvládnete im pomôcť?
Zadanú dostanete výsledkovku – zoznam mien riešiteľov od najlepšieho po najhoršieho. Z výsledkovky sa pre každého riešiteľa dozvieme aj to, ako sa jeho umiestnenie zmenilo oproti minulej sérii:
Zlepšenie sa znamená, že poradie účastníka v aktuálnej výsledkovke je lepšie (menšie) ako jeho poradie v predošlej výsledkovke.
Zhoršenie sa znamená, že poradie účastníka v aktuálnej výsledkovke je horšie (väčšie) ako jeho poradie v predošlej výsledkovke.
Za predpokladu, že sa poradie nezväčšilo, ani nezmenšilo, hovoríme, že sa jeho poradie zachovalo.
Zistite, či zadaná výsledkovka mohla vzniknúť korektným spôsobom z nejakej predošlej výsledkovky a jednu takúto predošlú výsledkovku nájdite. Z dôvodu zachovania jednoduchosti zadania rátame s tým, že účastníci medzi sériami nepribúdajú, nemiznú a nemôžu byť dvaja na tom istom mieste.
Z prvého riadku načítajte $z$ ($1 \leq z \leq 100\,000$) – počet riešiteľov.
$z$ nasledujúcich riadkov zobrazuje aktuálne výsledky zoradené od najlepšieho riešiteľa (najmenšie umiestnenie) po najhoršieho. Každý riadok začína znakom, ktorý určuje relatívny posun voči predošlej výsledkovke: "+" pre zlepšenie, "-" pre zhoršenie, "0" pre zachovanie poradia. Za medzerou nasleduje meno riešiteľa pozostávajúce z malých písmen anglickej abecedy (dĺžky najviac 20).
Na prvý riadok vypíšte reťazec "OK", ak daná výsledkovka mohla vzniknúť korektne. Na ďalších $z$ riadkov vypíšte jedno možné predošlé poradie riešiteľov (od najlepšieho po najhoršieho).
Vypíšte reťazec "FAIL", ak je daná výsledkovka určite chybná.
Input:
3
+ peter
- alica
0 bob
Output:
OK
alica
peter
bob
Input:
1
- peter
Output:
FAIL
Korešpondenčný seminár z programovania zastrešuje občianske združenie Trojsten.
Trojsten, o.z.
FMFI UK, Mlynská dolina
842 48 Bratislava
Programátorská súťaž pre základoškolákov
Materiály a úlohy na výučbu programovania
Intenzívny programátorský zážitok v lete