#include <iostream>
#include <vector>
#include <stdlib.h>
using namespace std;
void initialize_matrix(vector< vector<int> > &a, int m, int n)
{
int i, j;
// make sure the matrix has the given number of rows,
// and that each row has the right number of elements
// one for each column; number of rows is m, number of
// columns is n
a.resize(m);
for (i=0; i<m; i++)
a[i].resize(n);
// generate the matrix
for (i=0; i<m; i++)
for (j=0; j<n; j++)
a[i][j] = drand48()*101; // random integer from 0 to 100
}
void add_matrices(vector< vector<int> > &result,
vector< vector<int> > &a,
vector< vector<int> > &b)
{
int i, j;
int m = a.size();
int n = a[0].size();
result.resize(m);
for (i=0; i<m; i++)
result[i].resize(n);
// execute the addition
for (i=0; i<m; i++)
for (j=0; j<n; j++)
result[i][j] = a[i][j] + b[i][j];
}
void print_matrix(vector< vector<int> > &a)
{
int i, j;
int m = a.size();
int n = a[0].size();
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
cout << a[i][j] << " ";
cout << endl;
}
}
int main()
{
int m, n;
vector< vector<int> > a;
vector< vector<int> > b;
vector< vector<int> > c;
// read matrix size from input
cin >> m;
cin >> n;
// set random seed
srand48(123);
// initialize the matrices a and b
initialize_matrix(a, m, n);
initialize_matrix(b, m, n);
// add a and b into c
add_matrices(c, a, b);
// print the matrices
cout << endl << "Matrix A:" << endl;
print_matrix(a);
cout << endl << "Matrix B:" << endl;
print_matrix(b);
cout << endl << "Matrix C = A + B:" << endl;
print_matrix(c);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RkbGliLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBpbml0aWFsaXplX21hdHJpeCh2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gJmEsIGludCBtLCBpbnQgbikKewogIGludCBpLCBqOwoKICAvLyBtYWtlIHN1cmUgdGhlIG1hdHJpeCBoYXMgdGhlIGdpdmVuIG51bWJlciBvZiByb3dzLAogIC8vIGFuZCB0aGF0IGVhY2ggcm93IGhhcyB0aGUgcmlnaHQgbnVtYmVyIG9mIGVsZW1lbnRzCiAgLy8gb25lIGZvciBlYWNoIGNvbHVtbjsgbnVtYmVyIG9mIHJvd3MgaXMgbSwgbnVtYmVyIG9mCiAgLy8gY29sdW1ucyBpcyBuCgogIGEucmVzaXplKG0pOwoKICBmb3IgKGk9MDsgaTxtOyBpKyspCiAgICBhW2ldLnJlc2l6ZShuKTsKCiAgLy8gZ2VuZXJhdGUgdGhlIG1hdHJpeAoKICBmb3IgKGk9MDsgaTxtOyBpKyspCiAgICBmb3IgKGo9MDsgajxuOyBqKyspCiAgICAgIGFbaV1bal0gPSBkcmFuZDQ4KCkqMTAxOyAvLyByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gMTAwCn0KCgp2b2lkIGFkZF9tYXRyaWNlcyh2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gJnJlc3VsdCwgCgkJICB2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gJmEsCgkJICB2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gJmIpCnsKICBpbnQgaSwgajsKICBpbnQgbSA9IGEuc2l6ZSgpOwogIGludCBuID0gYVswXS5zaXplKCk7CiAgCiAgcmVzdWx0LnJlc2l6ZShtKTsKICBmb3IgKGk9MDsgaTxtOyBpKyspCiAgICByZXN1bHRbaV0ucmVzaXplKG4pOwoKICAvLyBleGVjdXRlIHRoZSBhZGRpdGlvbgoKICBmb3IgKGk9MDsgaTxtOyBpKyspCiAgICBmb3IgKGo9MDsgajxuOyBqKyspCiAgICAgIHJlc3VsdFtpXVtqXSA9IGFbaV1bal0gKyBiW2ldW2pdOwp9Cgp2b2lkIHByaW50X21hdHJpeCh2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gJmEpCnsKICBpbnQgaSwgajsKICBpbnQgbSA9IGEuc2l6ZSgpOwogIGludCBuID0gYVswXS5zaXplKCk7CgogIGZvciAoaT0wOyBpPG07IGkrKykKICAgIHsKICAgICAgZm9yIChqPTA7IGo8bjsgaisrKQoJY291dCA8PCBhW2ldW2pdIDw8ICIgIjsKICAgICAgY291dCA8PCBlbmRsOwogICAgfQp9CgppbnQgbWFpbigpCnsKICBpbnQgbSwgbjsKICB2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gYTsKICB2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gYjsKICB2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gYzsKCiAgLy8gcmVhZCBtYXRyaXggc2l6ZSBmcm9tIGlucHV0CiAKICBjaW4gPj4gbTsKICBjaW4gPj4gbjsKCiAgLy8gc2V0IHJhbmRvbSBzZWVkCgogIHNyYW5kNDgoMTIzKTsKCiAgLy8gaW5pdGlhbGl6ZSB0aGUgbWF0cmljZXMgYSBhbmQgYgoKICBpbml0aWFsaXplX21hdHJpeChhLCBtLCBuKTsKICBpbml0aWFsaXplX21hdHJpeChiLCBtLCBuKTsKCiAgLy8gYWRkIGEgYW5kIGIgaW50byBjCgogIGFkZF9tYXRyaWNlcyhjLCBhLCBiKTsKCiAgLy8gcHJpbnQgdGhlIG1hdHJpY2VzCiAgCiAgY291dCA8PCBlbmRsIDw8ICJNYXRyaXggQToiIDw8IGVuZGw7CiAgcHJpbnRfbWF0cml4KGEpOwoKICBjb3V0IDw8IGVuZGwgPDwgIk1hdHJpeCBCOiIgPDwgZW5kbDsKICBwcmludF9tYXRyaXgoYik7CgogIGNvdXQgPDwgZW5kbCA8PCAiTWF0cml4IEMgPSBBICsgQjoiIDw8IGVuZGw7CiAgcHJpbnRfbWF0cml4KGMpOwoKICByZXR1cm4gMDsKfQo=