Maria i Josep han d’intercanviar sovint informació i no volen que la resta dels seus companys de despatx puguin assabentar-se. Per això han acordat un sistema simple de xifrat que amaga el missatge dins d’una matriu quadrada de lletres majúscules. Heu de fer un programa que rebi una matriu amb un missatge ocult i ho escrigui.
Per recuperar el missatge heu de seguir un recorregut (cíclic) de la matriu per diagonals i en sentit creixent (veure figura) i tenir en compte alguns paràmetres addicionals.
el nombre de caràcters que es necessita extreure de la matriu.
la posició inicial de la primera lletra del missatge ocult.
el nombre de posicions que cal saltar (en el recorregut per diagonals) per trobar la següent lletra del missatge ocult.
A més sabem que el missatge original està format per paraules que
contenen exclusivament lletres majúscules i que el blanc que separe dues
paraules s’ha reescrit, abans d’ocultar-ho, amb la combinació
XX.
El vostre programa ha d’utilitzar la següent definició:
struct Coord
int x,y;
;
i també ha de definir, implementar i utilitzar la funció:
Coord seguentD (const Coord& p, int n);
que, donades les coordenades d’una posició en una matriu quadrada , calcula la posició següent d’acord amb un recorregut per diagonals en sentit creixent. Por exemple si , la funció amb ha de tornar les coordenades , amb , i amb , .
L’entrada consisteix en diverses línies contenint informació sobre matrius amb missatges ocults. La descripció d’una matriu s’inicia amb una línia amb 5 valors enters, , , () i , , ( amb ) que determinen els paràmetres. Seguits de línies descrivint la matriu que amaga el missatge per files.
Per a cada matriu la sortida está formada pel missatge ocult, escrit
amb les paraules separades per un blanc. Podeu assumir que la combinació
XX mai forma part d’una paraula del missatge original, que
mai apareix la combinació XXX en un missatge ocult i que el
missatge ocult sempre té com a mínim una paraula.
Seguiu el format especificat en els exemples.
Input
6 0 34 0 0 NXSEXE OEDXRP XXADAE XXRCDL IEXXAR PXXTLS 4 0 11 2 2 XAAX MIXO RXHA XXLX 5 1 11 2 0 PROAX CUAXA HLAAI LXMRA XMRIA 8 3 15 4 2 PPPPPPIS PPPPPPPP CUPPPPPP PLPPPPGP PPMSAPPP TPPPPEPP PPPPPXXP PPTPPPPO
Output
NO ES DEIXA PERDRE CAP DETALL HOLA MARIA HOLA MARIA MISSATGE OCULT