Vikingahackare | 프로그래밍의 벗 PivotOJ
PivotOJ

Vikingahackare

시간 제한: 1000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2014 — onlinekvalBOJ 26906

문제

Att vikingarna var duktiga krigare känner nog de flesta till, men att de också hade bra programmerare är mindre välkänt. Att programmera en runsten krävde mycket tid och lämnade inte mycket rum för misstag. Detta gjorde tyvärr även runstenarna extra sårbara för vikingahackare, som härjade fritt.

Du har fått i uppdrag att översätta en runsten från den här tiden med hjälp av ett uppslagsverk av tecken och dess binära representation (vikingarna saknade högnivåspråk och kodade direkt i ettor och nollor). Eftersom de flesta runstenar till slut blev hackade så finns det dock risk att vissa delar av koden är fel.

입력

På första raden står ett tal TT (1T161 \le T \le 16), antalet tecken i alfabetet.

Därefter följer TT rader bestående av ett tecken (små och stora bokstäver mellan a-z samt siffror kan förekomma) följt av tecknets binära representation (en sekvens av ettor och nollor som alltid är av längd 4). Till sist följer en sträng av NN (1N4000)1 \leq N \leq 4\,000) stycken ettor och nollor, runstenen som ska översättas. Det är garanterat att NN är delbar med 44 och att det inte finns två olika tecken med samma binära representation i indata.

출력

Skriv ut en rad med NN tecken, översättningen av runstenen. För de tecken som inte kunde översättas korrekt ska istället ett "?" skrivas ut.

힌트

Vi får reda på att 0100 ska översättas till a, och att 1000 ska översättas till b. Strängen som ska översättas är 0100100000101000, vilket kan delas upp i tecknen 0100, 1000, 0010 och 1000. Det tredje tecknet är det enda som inte kan översättas, vilket ger utdatan ab?b.

예제

예제 1

입력
2
a 0100
b 1000
0100100000101000
출력
ab?b

예제 2

입력
6
2 0101
P 1101
1 1010
4 1011
O 1110
0 0010
110111110101010010101011
출력
P?2?14
코드를 제출하려면 로그인하세요.