Ahojte moji bratia ktorým sa otvorili oči, ako už všetci isto vieme, mimozemšťania sa snažia získať našu planétu. Našťastie, naša verná kamrátka M.i.š.k.a - Mimoriadne Iniciatívna Šifrovateľská Kamrátka (Asi) - našla spôsob, ako sa brániť. Vymyslela, ako zašifrovať všetky naše dôležité informácie, veľmi zložitým a komplexným spôsobom, že ich mimozemšťania nikdy nerozlúštia. Ako to spravila? Funguje to tak, že ku každému písmenku vymyslela náhodné slovo a následne každé písmenko z našej správy zamenila za toto slovo. Ale potom si povedala, že toto by tí ufóni mohli veľmi ľahko dekódovať. Preto to spravila znovu. Každé písmenko z novej správy vymenila za slovo jemu prislúchajúce, rovnako ako prvý krát. Stále sa jej ale správa nezdala dosť zakódovaná, tak pre istotu tento proces zopakovala ešte $N$-krát. Teraz je už správa veľmi dobre zakódovaná, ale keď ju posielala našim spojencom, mimozemšťania nám ukradli jedno písmenko z tejto zakódovanej správy. Pomôžte nám zistiť, ktoré písmenko nám ukradli.
Na vstupe dostanete ku každému písmenku z abecedy priradený string nejakej náhodnej dĺžky. Taktiež tam dostanete aj pôvodnú správu a počet $N$ (koľko krát naši vedci vymenili každé písmenko zo správy za jemu prislúchajúci string). Na záver ešte dostanete aj číslo $K$. Vašou úlohou je vypísať $K$-te písmenko z výslednej správy. Ak výsledná správa je kratšia ako $K$ tak vypíšte “Neexistuje”. Zároveň existuje aj číslo $D$, ktoré udáva maximálnu dĺžku stringu priradeného písmenku z abecedy.
V prvom riadku vstupu je string, ktorý vedci chcú zakódovať. V tejto úlohe používame iba malé písmenká anglickej abecedy. String bude mať dĺžku aspoň $1$ a najviac $10^6$. V druhom riadku sú čísla $N$ udávajúce koľko krát sa má každé písmenko zmeniť za jemu prislúchajúci string a $K$ udávajúce koľkaté písmenko z výsledného reťazca chceme vedieť. Následuje $26$ riadkov kde na $i$-tom riadku je string priradený písmenku $i$-temu z abecedy (na prvom riadku ku $a$-čku na druhom $b$-čku atď). V každom riadku sa nachádza alespoň 1 znak. Jediný prípad, kedy v riadku nedostanete pismenko malej abecedy je, keď sa tam bude nachádzať #. Tento znak znamená, že za písmenko vymieňame vždy prázdny string.
V jednotlivých sadách platia nasledujúce obmedzenia (kde $D$ reprezentuje aký najdlhší môže byť string ktorým nahrádzame jednotlivé písmenká):
| Sada | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| $1 \leq N \leq$ | $10$ | $25$ | $10^4$ | $10^5$ |
| $1 \leq \ D \leq$ | $1\,000$ | $10^4$ | $1\,000$ | $1\,000$ |
| $1 \leq K \leq$ | $1\,000$ | $10^6$ | $10^6$ | $10^18$ |
Zároveň ešte pre jednotlivé sady platí že:
| Sada | Obmedzenie |
|---|---|
| 1 | D^N <= $10^6$ |
| 2 | D*N <= $1\,000$ |
| 3 | D*N <= $10^5$ |
| 4 | D*N <= $10^5$ |
Vypíšte buď $K$-te písmeno z výslednej správy (číslujúc od $1$) alebo “Neexistuje” ak je výsledná správa kratšia ako $K$.
Input:
ab
1 4
abb
cde
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
Output:
c
z a-čka sme spravili “abb” a z b-čka “cde”, čo znamená, že z výsledného stringu “abbcde” chceme 4. písmenko, čo je c
Input:
abc
3 14
a
cdc
dd
eee
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
Output:
Neexistuje
z našeho slova abc sa po prvej zámene stalo “acdcdd”, po druhej sa z neho stalo “addeeeddeeeeee” a po tretej “aeeeeeeeeeeee”, keďže e-čka menime na prázdny string. A keďže sa pýtame na pozíciu, ktorá vo výslednom stringu neexistuje, tak vypíšeme “Neexistuje”
Input:
zwx
4 66
qoyh
bfd
m
dsha
gnif
fyz
#
t
oeea
#
y
f
j
gr
ugf
jal
fei
#
jt
atvw
cj
jp
kpw
b
ax
ma
Output:
a
vývoj stringu: zwx -> makpwb -> jqoyhyjalkpwbfd -> feiugfaxtaxqoyhfyjalkpwbfdfyzdsha -> fyzgnifoeeacjfyzqoyhbatvwqoyhbfeiugfaxtfyzaxqoyhfyjalkpwbfdfyzdshafyzaxmadshajttqoyh
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