Com la majoria de joves, la Steffy es passa moltes hores al dia enviant missatges SMS als seus amics. Avui està ensenyant el seu nou mòbil rosa al Roy i al Johnny.
1 | 2 | 3 |
ABC | DEF | |
4 | 5 | 6 |
GHI | JKL | MNO |
7 | 8 | 9 |
PQRS | TUV | WXYZ |
0 | ||
WWWW | WWWW | WWWW |
Roy, amb el teu telèfon sense T9, com escriuries “BONA”?
Feu un programa que, a partir d’un diccionari de paraules amb les seves freqüències, utilitzi la tecnologia T9 per “endevinar” la paraula corresponent a cada seqüència de tecles donada.
Entrada
L’entrada comença amb la descripció d’un diccionari: un natural n, seguit de n parells amb una paraula en majúscules i un natural que representa la seva freqüència (com més alt, més freqüent és la paraula). Totes les paraules del diccionari són diferents. Després venen les seqüències de tecles, les quals són cadenes (potser llargues) de dígits entre ‘2’ i ’9’.
Sortida
Per a cada seqüència de tecles de l’entrada, cal escriure en una línia la paraula del diccionari corresponent amb freqüència més alta. En cas d’empat a freqüències, cal escriure la paraula més petita en ordre alfabètic. En cas de no correspondre’s a cap paraula del diccionari, cal escriure “???”. Utilitzeu el format de l’exemple.
Observacions
Encara que hi ha solucions millors, per senzillesa useu les declaracions de tipus
per implementar i usar una funció string endevina(string s, const Diccionaridic); que, donada una seqüència de tecles s i un diccionari ordenat decreixentment per freqüència, i en cas d’empat creixentment per paraula, busqui seqüencialment i retorni la paraula del diccionari que es correspon a s, o bé “???”.
Lògicament, abans haureu d’ordenar el diccionari. Aquesta ordenació ha de ser eficient.
Qualsevol solució que no segueixi aquests requeriments serà qualificada amb un zero.
Input
7 CAPA 8 COMA 20 BONA 30 ESTROBOGRAMATIC 5 CASA 10 CARA 10 ZK 1 2662 2272 2273 378762647262842 34672572655667338823552337 95 95 2
Output
2662: BONA 2272: CARA 2273: ??? 378762647262842: ESTROBOGRAMATIC 34672572655667338823552337: ??? 95: ZK 95: ZK 2: ???