Zadanie
Čavojov kód
Počet bodov: 25, časový limit: 300ms
Čavoj vám poslal zakódovanú správu. Chcete ju odkódovať. Zakódovaný reťazec sa skladá z blokov. Bloky sú binárne reťazce. Každý blok vznikol zakódovaním nejakého čísla. Blokom dĺžky \(k \geq 1\) dokážeme zakódovať celé číslo od \(0\) po \(2^k - 1\).
Vstup a výstup
V prvom riadku vstupu je celé číslo \(k\) - dĺžka bloku. Všetky bloky sú teda rovnako dlhé. Platí, že \(1 \leq k \leq 14\).
V druhom riadku je reťazec \(s\) zložený zo znakov \(0\) a \(1\) predstavujúci zakódovanú správu. Jeho dĺžka je násobok \(k\) a zároveň je najviac \(200\,000\).
Nasleduje \(2^k\) riadkov. V \(i\)-tom z týchto riadkov sa nachádza binárny reťazec \(t_i\) dĺžky \(k\). To znamená, že číslo \(i\) sa zakóduje na \(t_i\). Prvý riadok teda predstavuje kód pre číslo \(0\), druhý pre číslo \(1\) a tak ďalej. Môžete predpokladať, že všetky \(t_i\) sú navzájom rôzne.
Odkódovaná správa je reťazec znakov, ktorý dostanete tak, že odkódujete \(s\).
Vypíšte odkódovanú správu.
Príklad
Input:
3
100011100111100010111001111000
110
011
100
111
101
001
000
010
Output:
2123273536
Prvé 3 znaky reťazca \(s\) sú \(100\). To sa nachádza v riadku reprezentujúcom číslo 2. Prvé číslo výstupu teda bude 2.
Pre odovzdávanie sa musíš prihlásiť.