Je sedem hodín ráno, v jednej ruke má rožok a v druhej je parižák. Ako poctivý zamestanec firmy Krásne Série Programujeme si predsa programátor Konco musí dopriať kvalitné raňajky. Koniec koncov sa hovorí, že ráno je múdrejšie večera. Toto si však zvyšní vedúci, ktorí sa nevolajú Konco, hovorili už veľa večerov, a teda séria stále nie je a nie je.
Vie to aj MisQo, a teda z megafónu zakričí: “Chalani, ešte u-už m-meškáme tak asi dvestotisíc r-rokov s t-tou hmmmm sériou, p-pohnite si do-p-pekla”.
Konco pozná MisQa už pomerne dlho, a preto ho veľmi neprekvapilo, že sa zakoktal. No ako správny študent informatky sa zamyslel. Keby sa MisQo optimálne zakoktal, aký lexikograficky najmenší reťazec vie docieliť?
Dostanete na vstupe reťazce $S$ a $T$, kde $S$ je reťazec tvorený malými písmenami anglickej abecedy a reťazec $T$ je tvorený nulami a jednotkami. Oba reťazce majú dĺžku $n$. Písmeno $S_i$ môžeme najviac raz duplikovať (teda pridať tesne za neho rovnaké písmenko) práve vtedy, keď $T_i = 1$. Nazvime túto operáciu duplikácia. Aký lexikograficky najmenší reťazec môžeme pomocou tejto operácie vyrobiť z pôvodného reťazca $S$?
Poznámka: reťazec A je lexikograficky menší ako reťazec B práve vtedy, keď na prvej pozícii, kde sa A a B líšia, má reťazec A písmenko, ktoré sa nachádza skôr v abecede.
Príklad: “aaabc” je lexikograficky menší ako “aabb”, pretože sa líšia na tretej pozícii, a druhý reťazec tam má ‘b’, a prvý ‘a’.
Príklad 2: “a” je lexikograficky menší ako “aa”, pretože sa líšia na druhej pozícii, kde prvý reťazec má prázdny znak, ktorý berieme ako “nultý v abecede”.
V prvom riadku vstupu je číslo $n$ ($1 \leq n \leq 10^6$) udávajúce dĺžku reťazcov $S$ a $T$.
V druhom riadku dostanete reťazec $S$ tvorený malými písmenami anglickej abecedy.
V treťom riadku dostanete reťazec $T$ tvorený nulami a jednotkami.
V jednotlivých sadách platia nasledujúce obmedzenia:
| Sada | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| $1 \leq n \leq$ | $20$ | $500$ | $5\,000$ | $10^6$ |
V druhej sade zároveň platí, že $T$ je tvorený najviac $20$ jednotkami.
Vypíš jeden riadok - lexikograficky najmenší reťazec dosiahnuteľný operáciou duplikácie, popísanej vyššie.
6
abedcx
111101
aabbedcx
8
aabacaba
11111111
aaaabaacaaba
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