#include <stdio.h>
#include <stdlib.h>
const int H = 10000;
const int W = 10000;
int main(int argc, char* argv[]) {
int** table
= (int**)malloc(H
* sizeof(int*)); for (int i = 0; i < H; ++i) {
table
[i
] = (int*)malloc(W
* sizeof(int)); }
for (int row = 0; row < H; ++row) {
for (int col = 0; col < W; ++col) {
table[row][col] = (col + 1) + W * row;
}
}
long total = 0;
if (argc == 1) {
printf("access: for each row\n"); for (int i = 0; i < 10; ++i) {
for (int row = 0; row < 10000; ++row) {
for (int col = 0; col < 10000; ++col) {
total += table[row][col];
}
}
}
} else {
printf("access: for each column\n"); for (int i = 0; i < 10; ++i) {
for (int col = 0; col < 10000; ++col) {
for (int row = 0; row < 10000; ++row) {
total += table[row][col];
}
}
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmNvbnN0IGludCBIID0gMTAwMDA7CmNvbnN0IGludCBXID0gMTAwMDA7CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgaW50KiogdGFibGUgPSAoaW50KiopbWFsbG9jKEggKiBzaXplb2YoaW50KikpOwogIGZvciAoaW50IGkgPSAwOyBpIDwgSDsgKytpKSB7CiAgICB0YWJsZVtpXSA9IChpbnQqKW1hbGxvYyhXICogc2l6ZW9mKGludCkpOwogIH0KICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBIOyArK3JvdykgewogICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgVzsgKytjb2wpIHsKICAgICAgdGFibGVbcm93XVtjb2xdID0gKGNvbCArIDEpICsgVyAqIHJvdzsKICAgIH0KICB9CgogIGxvbmcgdG90YWwgPSAwOwoKICBpZiAoYXJnYyA9PSAxKSB7CiAgICBwcmludGYoImFjY2VzczogZm9yIGVhY2ggcm93XG4iKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgewogICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCAxMDAwMDsgKytyb3cpIHsKICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCAxMDAwMDsgKytjb2wpIHsKICAgICAgICAgIHRvdGFsICs9IHRhYmxlW3Jvd11bY29sXTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9IGVsc2UgewogICAgcHJpbnRmKCJhY2Nlc3M6IGZvciBlYWNoIGNvbHVtblxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgMTAwMDA7ICsrY29sKSB7CiAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgMTAwMDA7ICsrcm93KSB7CiAgICAgICAgICB0b3RhbCArPSB0YWJsZVtyb3ddW2NvbF07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gMDsKfQ==