#include <bits/stdc++.h>
using namespace std;
struct timeit {
decltype(chrono::high_resolution_clock::now()) begin;
const string label;
timeit(string label = "???") : label(label) { begin = chrono::high_resolution_clock::now(); }
~timeit() {
auto end = chrono::high_resolution_clock::now();
auto duration = chrono::duration_cast<chrono::milliseconds>(end - begin).count();
cerr << duration << "ms elapsed [" << label << "]" << endl;
}
};
const int iters = 1e1;
const int DIM1 = 100000;
const int DIM2 = 100;
int A[DIM1][DIM2];
signed main() {
for (int i = 0; i < DIM1; i++) {
for (int j = 0; j < DIM2; j++) {
A[i][j] = rand() % 100;
}
}
{
timeit x("correct order");
for (int iter = 0; iter < iters; iter++)
for (int i = 0; i < DIM1; i++)
for (int j = 0; j < DIM2; j++)
A[i][j]++;
}
{
timeit x("incorrect order");
int overall = 0;
for (int iter = 0; iter < iters; iter++) {
for (int j = 0; j < DIM2; j ++)
for (int i = 0; i < DIM1; i++)
A[i][j]++;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgdGltZWl0IHsKICAgIGRlY2x0eXBlKGNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKSkgYmVnaW47CiAgICBjb25zdCBzdHJpbmcgbGFiZWw7CiAgICB0aW1laXQoc3RyaW5nIGxhYmVsID0gIj8/PyIpIDogbGFiZWwobGFiZWwpIHsgYmVnaW4gPSBjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7IH0KICAgIH50aW1laXQoKSB7CiAgICAgICAgYXV0byBlbmQgPSBjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CiAgICAgICAgYXV0byBkdXJhdGlvbiA9IGNocm9ubzo6ZHVyYXRpb25fY2FzdDxjaHJvbm86Om1pbGxpc2Vjb25kcz4oZW5kIC0gYmVnaW4pLmNvdW50KCk7CiAgICAgICAgY2VyciA8PCBkdXJhdGlvbiA8PCAibXMgZWxhcHNlZCBbIiA8PCBsYWJlbCA8PCAiXSIgPDwgZW5kbDsKICAgIH0KfTsKY29uc3QgaW50IGl0ZXJzID0gMWUxOwoKY29uc3QgaW50IERJTTEgPSAxMDAwMDA7CmNvbnN0IGludCBESU0yID0gMTAwOwppbnQgQVtESU0xXVtESU0yXTsKc2lnbmVkIG1haW4oKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IERJTTE7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgRElNMjsgaisrKSB7CiAgICAgICAgICAgIEFbaV1bal0gPSByYW5kKCkgJSAxMDA7CiAgICAgICAgfQogICAgfQogICAgewogICAgICAgIHRpbWVpdCB4KCJjb3JyZWN0IG9yZGVyIik7CiAgICAgICAgZm9yIChpbnQgaXRlciA9IDA7IGl0ZXIgPCBpdGVyczsgaXRlcisrKQogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IERJTTE7IGkrKykKICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgRElNMjsgaisrKQogICAgICAgICAgICAgICAgICAgIEFbaV1bal0rKzsKCiAgICB9CiAgICB7CiAgICAgICAgdGltZWl0IHgoImluY29ycmVjdCBvcmRlciIpOwogICAgICAgIGludCBvdmVyYWxsID0gMDsKICAgICAgICBmb3IgKGludCBpdGVyID0gMDsgaXRlciA8IGl0ZXJzOyBpdGVyKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBESU0yOyBqICsrKQogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBESU0xOyBpKyspCiAgICAgICAgICAgICAgICAgICAgQVtpXVtqXSsrOwogICAgICAgIH0KICAgIH0KfQ==