#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
#define N 200
void mult1(int **a, int **b, int **c)
{
for (unsigned q=0; q<N; ++q)
for (unsigned w=0; w<N; ++w)
c[q][w] = 0;
for (unsigned q=0; q<N; ++q)
for (unsigned w=0; w<N; ++w)
for (unsigned e=0; e<N; ++e)
c[q][w] += a[q][e] * b[e][w];
}
void mult2(int **a, int **b, int **c)
{
for (unsigned q=0; q<N; ++q)
for (unsigned w=0; w<N; ++w)
c[q][w] = 0;
for (unsigned q=0; q<N; ++q)
for (unsigned w=0; w<N; ++w)
for (unsigned e=0; e<N; ++e)
c[q][w] += a[q][e] * b[w][e];
}
int main()
{
int **a = new int*[N];
int **b = new int*[N];
int **c = new int*[N];
for (unsigned q=0; q<N; ++q)
{
a[q] = new int[N];
b[q] = new int[N];
c[q] = new int[N];
for (unsigned w=0; w<N; ++w)
{
a[q][w] = rand();
b[q][w] = rand();
}
}
long m1=0, m2=0;
for (unsigned q=0; q<5; ++q)
{
long t = clock();
mult1(a, b, c);
m1 += t = clock() - t;
cout << "1: " << t << endl;
t = clock();
mult2(a, b, c);
m2 += t = clock() - t;
cout << "2: " << t << endl;
}
cout << endl << "Results: " << m1 << ", " << m2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxjc3RkbGliPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgTiAyMDAKCnZvaWQgbXVsdDEoaW50ICoqYSwgaW50ICoqYiwgaW50ICoqYykKewoJZm9yICh1bnNpZ25lZCBxPTA7IHE8TjsgKytxKQoJCWZvciAodW5zaWduZWQgdz0wOyB3PE47ICsrdykKCQkJY1txXVt3XSA9IDA7CgkJCQoJZm9yICh1bnNpZ25lZCBxPTA7IHE8TjsgKytxKQoJCWZvciAodW5zaWduZWQgdz0wOyB3PE47ICsrdykKCQkJZm9yICh1bnNpZ25lZCBlPTA7IGU8TjsgKytlKQoJCQkJY1txXVt3XSArPSBhW3FdW2VdICogYltlXVt3XTsKfQoKdm9pZCBtdWx0MihpbnQgKiphLCBpbnQgKipiLCBpbnQgKipjKQp7Cglmb3IgKHVuc2lnbmVkIHE9MDsgcTxOOyArK3EpCgkJZm9yICh1bnNpZ25lZCB3PTA7IHc8TjsgKyt3KQoJCQljW3FdW3ddID0gMDsKCQkJCglmb3IgKHVuc2lnbmVkIHE9MDsgcTxOOyArK3EpCgkJZm9yICh1bnNpZ25lZCB3PTA7IHc8TjsgKyt3KQoJCQlmb3IgKHVuc2lnbmVkIGU9MDsgZTxOOyArK2UpCgkJCQljW3FdW3ddICs9IGFbcV1bZV0gKiBiW3ddW2VdOwp9CgppbnQgbWFpbigpCnsKCWludCAqKmEgPSBuZXcgaW50KltOXTsKCWludCAqKmIgPSBuZXcgaW50KltOXTsKCWludCAqKmMgPSBuZXcgaW50KltOXTsKCQoJZm9yICh1bnNpZ25lZCBxPTA7IHE8TjsgKytxKQoJewoJCWFbcV0gPSBuZXcgaW50W05dOwoJCWJbcV0gPSBuZXcgaW50W05dOwoJCWNbcV0gPSBuZXcgaW50W05dOwoJCQoJCWZvciAodW5zaWduZWQgdz0wOyB3PE47ICsrdykKCQl7CgkJCWFbcV1bd10gPSByYW5kKCk7CgkJCWJbcV1bd10gPSByYW5kKCk7CgkJfQoJfQoJCglsb25nIG0xPTAsIG0yPTA7CgkKCWZvciAodW5zaWduZWQgcT0wOyBxPDU7ICsrcSkKCXsKCQlsb25nIHQgPSBjbG9jaygpOwoJCW11bHQxKGEsIGIsIGMpOwoJCW0xICs9IHQgPSBjbG9jaygpIC0gdDsKCQljb3V0IDw8ICIxOiAiIDw8IHQgPDwgZW5kbDsKCQkKCQl0ID0gY2xvY2soKTsKCQltdWx0MihhLCBiLCBjKTsKCQltMiArPSB0ID0gY2xvY2soKSAtIHQ7CgkJY291dCA8PCAiMjogIiA8PCB0IDw8IGVuZGw7Cgl9CgkKCWNvdXQgPDwgZW5kbCA8PCAiUmVzdWx0czogIiA8PCBtMSA8PCAiLCAiIDw8IG0yIDw8IGVuZGw7CgkKCXJldHVybiAwOwp9