fbpx

Problema #1396 – MDiferenta – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau două matrice cu elemente numere întregi. Calculați diferența dintre prima și a doua matrice.

Date de intrare

Fișierul de intrare mdiferenta.in conține pe prima linie numerele n m, reprezentând dimensiunile primei matrice. Urmează n linii cu câte m valori, elementele primei matrice.

Linia n+2 conține numerele p q, reprezentând dimensiunile celei de-a doua matrice. Urmează p linii cu câte q valori, elementele celei de-a doua matrice.

Date de ieșire

Fișierul de ieșire mdiferenta.out va conține pe prima linie numerele S T, reprezentând dimensiunile matricei diferență. Următoarele S linii vor conține câte T valori separate prin exact un spațiu, reprezentând valorile din matricea diferență.

Restricții și precizări

  • 1 ≤ n , m , p , q ≤ 100;
  • valoarea absolută a elementelor fiecărei matrice vor fi mai mici decât 1.000.000.000;
  • scăderea matricelor se poate efectua pentru fiecare test.

Exemplu

mdiferenta.in

3 4
2 1 4 6 
5 -8 5 5 
2 5 -2 4 
3 4
3 7 -5 0 
1 -4 1 5 
-4 2 8 7 

mdiferenta.out

3 4
-1 -6 9 6 
4 -4 4 0 
6 3 -10 -3 
#include <bits/stdc++.h>
using namespace std;
ifstream fin("mdiferenta.in");
ofstream fout("mdiferenta.out");
int a[101][101] , b[101][101] , c[101][101];
int main()
{
    int n , m , p , q , max1 = 0 , max2 = 0;
    fin >> n >> m;
    for(int i = 1 ; i <= n ; i++)
        for(int j = 1 ; j <= m ; j++)
            fin >> a[i][j];
    fin >> p >> q;
    for(int i = 1 ; i <= p ; i++)
        for(int j = 1 ; j <= q ; j++)
            fin >> b[i][j];
    if(n > p) max1 = n;
    else max1 = p;
    if(m > q) max2 = m;
    else max2 = q;
    for(int i = 1 ; i <= max1 ; i++)
        for(int j = 1 ; j <= max2 ; j++)
            c[i][j] = a[i][j] - b[i][j];
    fout << max1 << " " << max2 << endl;
    for(int i = 1 ; i <= max1 ; i++)
    {
        for(int j = 1 ; j <= max2 ; j++)
            fout << c[i][j] << " ";
        fout << endl;
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa