Buscador de pel·lícules X14417


Statement
 

pdf   zip

Per fer més suportables els dies de confinament, el professor Oak ha contractat una plataforma de televisió per Internet. Com que el catàleg de pel·lícules és inmens, el sistema proporciona un buscador que, mitjançant el control remot, permet buscar les pel·lícules pel seu títol. Més concretament, el buscador mostra a la pantalla de TV una matriu de lletres i un cursor a sobre d’una d’elles, inicialment la de la cantonada superior esquerra. Mitjançant els botons \uparrow, \downarrow, \rightarrow i \leftarrow del control remot, es pot anar movent el cursor. Algunes de les caselles de la matriu, però, no es poden escollir (a la imatge, en vermell; en els jocs de prova, amb un asterisc *), i aleshores el cursor no es pot moure en aquella direcció. Tampoc no es pot sortir dels límits superior, inferior, dret i esquerre de la matriu. Una vegada el cursor és a sobre de la lletra desitjada, cal pitjar el botó OK.

image

Abans de mirar si una pel·lícula és al catàleg, el professor Oak vol saber quants botons del control remot li caldrà pitjar per inserir el títol al buscador. El podeu ajudar?

Per adaptar el problema a Jutge.org, a partir d’ara assumirem que les caselles de la matriu poden contenir una paraula (vista com una unitat) en lloc de només una sola lletra, i que el que inserim al buscador és doncs una seqüència de paraules, en lloc d’una seqüència de lletres.

Entrada

L’entrada conté diferents casos. Cada cas comença amb nn el nombre de files i mm el nombre de columnes de la matriu del buscador. Després segueixen nn línies amb mm paraules cadascuna, separades per espais. Les paraules consistents en un sol caràcter * representen caselles prohibides de la matriu. Llevat de *, que es pot repetir, la resta de paraules només poden aparèixer una sola vegada. Després segueix el nombre pp de paraules de la seqüència que volem inserir al buscador. Finalment segueixen les pp paraules de la seqüència, totes elles diferents de *. Qualsevol paraula de l’entrada està formada per lletres de l’alfabet en majúscula o guió baix _, o és la paraula *. Es compleix que 1n,m3001 \leq n, m \leq 300, 1pmin(2nm,1000)1 \leq p \leq \min(2 \cdot n \cdot m, 1000), i que per cada cas la cantonada superior esquerra no conté la paraula *.

Sortida

Per a cada cas, cal escriure en una línia el nombre total de cops que s’ha de pitjar un botó del comandament (\uparrow, \downarrow, \rightarrow, \leftarrow o OK) per tal d’inserir les pp paraules de la seqüència al buscador. Si no és possible (perquè no es pot arribar a una paraula, o perquè no apareix a la matriu), cal escriure impossible.

Public test cases
  • Input

    2 3
    PA  PI  *
    *   MA  MI
    3
    PI MI PA
    
    
    2 3
    PA  PI  *
    *   MA  MI
    3
    PA MI MI 
    
    
    2 3
    PA  *   *
    *   MA  MI
    3
    PA MA NA
    
    
    3 10
    A B C D E F G H I J
    K L M N * O P Q R S
    T U V W X Y Z _ * *
    12
    B L A D E _ R U N N E R
    

    Output

    9
    6
    impossible
    45
    
  • Information
    Author
    Enric Rodríguez
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++