Ak nevieš programovať, nezúfaj! Môžeš sa to naučiť a ešte za to získať body, ktoré sa ti budú počítať namiesto tejto úlohy.
Stačí, že pôjdeš na stránku Programátorskej Liahne (liahen.ksp.sk). Keď budeš riešiť sadu variables_cpp, bodmi, ktoré získaš si môžeš nahradiť riešenie tejto úlohy. Stačí ak na spodku tejto stránky odovzdáš pdf-ko s prezývkou, ktorú používaš na Liahni.
Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Jitke na [email protected]
V jedno pekné popoludnie sa Timka vracala celá šťastná domov zo sústredenia Prasku. Nielenže bolo sústredenie skvelé, tešila sa aj z dvoch náramkov plných cukríkov všelijakých chutí, ktoré vyhrala v tombole.
Aby spravila radosť Romanovi, ktorý na sústredenie nemohol prísť, rozhodla sa, že mu vyrobí nový špeciálny náramok. Tento náramok by mal byť čo najdlhší a zároveň by malo platiť, že cukríky, z ktorých bude zložený, sa budú dať preusporiadať tak, aby tvorili podpostupnosť (pozri časť Úloha) jedného z pôvodných náramkov. A to nie je všetko! Ak cukríky znovu preusporiadame, vytvoria podpostupnosť druhého z pôvodných náramkov.
Timka, ešte nabudená zo sústredka, hneď vedela, z ktorých cukríkov má náramok pre Romana poskladať. Len čo prišla domov pustila sa do práce a aj zabudla, akú mala sama na cukríky chuť.
Úloha
Vašou úlohou je napísať program, ktorý na vstupe dostane popis náramkov, ktoré Timka vyhrala a vypíše náramok, ktorý Timka vyrobila pre Romana.
Pre jednoduchosť si budeme cukríky reprezentovať malými písmenami anglickej abecedy – rovnaké písmená predstavujú rovnaké cukríky. Náramok si teda vieme predstaviť ako reťazec písmen, napr. abac
je náramok so štyrmi cukríkmi, kde sú prvý a tretí cukrík rovnaké.
Romanov náramok musí byť najdlhší možný. Navyše cukríky v ňom musíme vedieť preusporiadať tak, aby vytvorili podpostupnosť prvého náramku, a potom preusporiadať tak, aby vytvorili podpostupnosť druhého náramku.
Podpostupnosť reťazca dostaneme tak, že z neho vymažeme ľubovoľné znaky a zostávajúce písmená bez zmeny poradia spojíme dokopy. Napríklad nrm
, ramo
, naok
sú podpostupnosti slova naramok
, ale aaa
ani kom
nie sú.
Samozrejme, môže existovať viac možností ako vytvoriť náramok pre Romana, nás preto bude zaujímať lexikograficky najmenší. Teda ak by sme zobrali všetky možné prípustné najdlhšie náramky a zoradili by sme ich podľa abecedy, tento by bol prvý v poradí.
Formát vstupu
Na prvom riadku vstupu je reťazec reprezentujúci prvý Timkin náramok. Na druhom riadku je reťazec reprezentujúci druhý náramok.
Formát výstupu
Na výstup vypíšte do jediného riadku lexikograficky najmenší reťazec, ktorý tvorí najdlhší možný náramok pre Romana. V prípade, že takýto náramok neexistuje, vypíšte neda sa
.
Hodnotenie
Číslo sady | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
maximálna dĺžka náramkov | \(100\) | \(1\,000\) | \(2\,000\) | \(100\,000\) | \(500\,000\) |
Príklady
Input:
prask
trojsten
Output:
rs
Náramok rs je podpostupnosťou náramku prask (cukríky na indexoch \(1\) a \(3\)) a aj podpostupnosťou náramku trojsten (cukríky na indexoch \(1\) a \(4\)).
Input:
krk
nos
Output:
neda sa
Timka nedokáže vyrobiť špeciálny náramok pre Romana.
Input:
hlava
aha
Output:
aah
Aj náramok haa by spĺňal požiadavky, čo sa týka dĺžky a podpostupností (v prvom náramku cukríky na indexoch \(0\), \(2\) a \(4\). V druhom náramku sa preusporiadanie aha zhoduje s cukríkmi na indexoch \(0\),\(1\) a \(2\)), no nebol by lexikograficky najmenší. Preto vypisujeme náramok aah.
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.