Matriu de Màscara X83293


Statement
 

pdf   zip   main.cc

thehtml

Una matriu de màscara K és una matriu de caselles de tipus bool. Aplicar K a una matriu d’enters M consisteix en multiplicar per 0 aquelles caselles anàlogues de M (amb la mateixa fila i columna) que a K 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 K 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 K té un 0 (false), i la resta de valors queden igual que a M.

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 M i K 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.

Public test cases
  • Input

    3 4
    1 3 4 2   1 0 1 0
    5 9 7 3   0 1 0 1
    1 8 8 4   1 0 1 0
    
    2 2
    7 8   0 0
    4 5   1 1
    

    Output

    1 0 4 0
    0 9 0 3
    1 0 8 0
    
    0 0
    4 5
    
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++