Vikingahackare

Problem ID: vikingahackareTime limit: 1 secondMemory limit: 1024 MB

Difficulty

1.5

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.

Indata

På första raden står ett tal $1 \le T \le 16$, antalet tecken i alfabetet. Därefter följer $T$ 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 rad bestående av en enda icke-tom sträng med högst $4\, 000$ ettor och nollor, runstenen som ska översättas (längden av den här strängen är alltid delbar med 4). Det är garanterat att det inte finns två olika tecken med samma binära representation i indata.

Utdata

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

Exempel

I den första exempel-indatan får vi 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.

Sample Input 1 Sample Output 1
2
a 0100
b 1000
0100100000101000
ab?b
Sample Input 2 Sample Output 2
6
2 0101
P 1101
1 1010
4 1011
O 1110
0 0010
110111110101010010101011
P?2?14

Download the sample data files

Author: Erik Odenman. Source: Programmeringsolympiadens onlinekval 2014. License: Creative Commons License (cc by-sa)