Escala consonant de paraules X47203


Statement
 

pdf   zip

html

Definició 1: Un parell de paraules en majúscula (p1, p2) forma una escala consonant si el nombre d’aparicions de consonants a p2 supera al nombre d’aparicions de consonants a p1.

Per exemple, el parell (MADUIXOT, PRESSEC) forma una escala consonant, perquè MADUIXOT té 4 consonants i PRESSEC en té 5. També la formen (POMA, PLATAN). Però en canvi no formen escala consonant (SINDRIA, PRUNA) ni (PERA, KIWI).

Definició 2: Una escala consonant de paraules de longitud k és una seqüència de k paraules escrites amb lletres majúscules, on tot parell de paraules consecutives de la seqüència forma una escala consonat.

Per exemple: POMA, MADUIXA, PLATAN, PRESSEC, ALBERCOCS és una escala consonant de paraules de longitud 5.

Definició 3: Donada una matriu amb n files i m columnes, diem que una seqüència de k posicions de la matriu és esglaonada si és de la forma {(i,j), (i+1, j+1),..., (i+k−1, j+k−1)}, per i, j, k complint 0≤ i, i+k−1 < n, 0≤ j, j+k−1<m.

Per exemple, donada una matriu de 6× 10, la seqüència {(0,2),(1,3),(2,4),(3,5),(4,6)} és una seqüència esglaonada de posicions que comença a la posició (0,2) i té longitud 5.

Es demana:

Feu un programa que, donada una matriu de paraules i un natural k , recorri la matriu per files i indiqui la primera posició (i,j) que conté una escala consonant de paraules de longitud k en la seqüència esglaonada de posicions que comença a (i,j).

El vostre programa ha de representar la matriu de paraules mitjançant el següent tipus:

struct Paraula { string contingut; // la paraula int consonants; // nombre d’aparicions de consonants }; typedef vector< vector<Paraula> > MatParaules;

Entrada

L’entrada conté un únic cas. El cas consisteix en el nombre de files n≥ 1, el nombre de columnes m≥ 1 de la matriu i un natural positiu k que determina la longitud de l’escala consonant de paraules a cercar. A continuació venen n línies amb m strings cadascuna. Cada string està format només per lletres majúscules.

Sortida

Cal escriure en una línia el número de fila, el número de columna de la matriu, i la paraula amb què comença la primera (segons un recorregut per files) escala consonant de paraules de longitud k en una seqüència esglaonada de posicions. Cal escriure -1 -1 si la matriu no en conté cap.

Seguiu el format especificat als exemples. El vostre codi ha de seguir bones normes d’estil, i ha de contenir els comentaris que considereu oportuns.

Public test cases
  • Input

    4 6 2
    SA SO TO ON NI VI
    VI SA SO TO ON NI
    NI VI SA SO XX ON
    YY ZZ XX YY ZZ XX
    

    Output

    1 3 TO
    
  • Input

    1 6 1
    SA SO TO ON NI VI
    

    Output

    0 0 SA
    
  • Input

    2 6 2
    SA SO TO ON NI VI
    VI SA SO TO ON NI
    

    Output

    -1 -1
    
  • Input

    3 6 4
    SA SO TO ON NI VI
    SA SO TO ON NI VI
    SA SO TO ON NI VI
    

    Output

    -1 -1
    
  • Information
    Author
    Gabriel Valiente, Maria Blesa
    Language
    Catalan
    Other languages
    English Spanish
    Official solutions
    Unknown.
    User solutions
    C++