Matriu de Màscara

Una matriu de màscara KK és una matriu de caselles de tipus bool. Aplicar KK a una matriu d’enters MM consisteix en multiplicar per 0 aquelles caselles anàlogues de MM (amb la mateixa fila i columna) que a KK contenen false, i no alterar les altres caselles. Per exemple:

    M            K        apply_mask(M, K)
1  2  3  4    1 1 0 0        1  2 0 0
5  6  7  8    0 1 0 1        0  6 0 8
9 10 11 12    1 1 0 0        9 10 0 0

Les caselles de KK es mostren com a 0 o 1 quan són false o true, respectivament. Es veu com la matriu resultat conté zeros en aquelles caselles a on KK té un 0 (false), i la resta de valors queden igual que a MM.

Implementa una funció apply_mask amb la declaració següent:

typedef vector<vector<int>> Matrix;
typedef vector<vector<bool>> Mask;

/**
 * @brief Retorna una nova matriu que és `M` aplicant la
 * màscara `K`. La màscara és una matriu que té caselles de tipus
 * `bool`, i quan una casella de la màscara és `false`, cal
 * deixar la casella anàloga (mateixa fila i columna) de `M` a 0, 
 * altrament no cal fer res.
 *
 * @param `K` la matriu de màscara
 * @param `M` la matriu d'interès (d'enters)
 *
 * @returns  La matriu resultat d'aplicar `K` a `M`
 */
Matrix apply_mask(const Matrix& M, const Mask& K);

Observació

El centre d’interès d’aquest problema és la correctesa. Els jocs de prova comproven que la majoria de casos possibles produeixin la sortida correcta.

Entrada

L’entrada ja la fa el programa principal proporcionat. Consisteix en un seguit de cassos amb dos enters per files i columnes i les matrius MM i KK de costat, en el format mostrat als exemples.

Sortida

La sortida també la produeix el programa principal proporcionat. Es mostra la matriu resultat de cridar apply_mask en el mateix format, separant les matrius per una línia buida per claredat.

Informació del problema

Autoria: Pau Fernández

Generació: 2026-01-25T16:43:29.254Z

© Jutge.org, 2006–2026.
https://jutge.org