#include <iostream>
#include <chrono>
using namespace std;
int main() {
double a[10000],b[10000];
for(int i=0;i<10000;i++){
b[i]=(double)(rand()+1)/(double)(RAND_MAX+1);
a[i]=b[i];
}
auto start = chrono::steady_clock::now();
int x1=0,x2=0,i1,index;
for ( i1 = 1; i1 <= 10000; i1++){
for ( index = 0; index < 10000; index++){
x1++;
if(x1>=100){
x1=0;
x2++;
}
if (x1 > 10)
{
a[index] += a[index - 10*1];
}
if (x2 < 95)
{
a[index] += a[index + 5*100];
}
}
}
auto end = chrono::steady_clock::now();
auto diff = end - start;
cout << "method 8: " << chrono::duration <double, nano> (diff).count() << " ns" << endl;
double temp;
for(int i=0;i<10000;i++){
temp=a[i];
a[i]=b[i];
b[i]=temp;
}
start = chrono::steady_clock::now();
for ( i1 = 1; i1 <= 10000; i1++){
index=-1;
for ( x2 = 0; x2 < 100; x2++){
for ( x1 = 0; x1 < 100; x1++){
index++;
if (x1 > 10){
a[index] += a[index - 10*1];
}
if (x2 < 95){
a[index] += a[index + 5*100];
}
}
}
}
end = chrono::steady_clock::now();
diff = end - start;
cout << "method 6 " << chrono::duration <double, nano> (diff).count() << " ns" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2hyb25vPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgoJZG91YmxlIGFbMTAwMDBdLGJbMTAwMDBdOwoJZm9yKGludCBpPTA7aTwxMDAwMDtpKyspewoJCWJbaV09KGRvdWJsZSkocmFuZCgpKzEpLyhkb3VibGUpKFJBTkRfTUFYKzEpOwoJCWFbaV09YltpXTsKCX0KCWF1dG8gc3RhcnQgPSBjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CgoJICAgIGludCB4MT0wLHgyPTAsaTEsaW5kZXg7IAogICAgICBmb3IgKCBpMSA9IDE7IGkxIDw9IDEwMDAwOyBpMSsrKXsKICAgICAgICAgICAgICAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgMTAwMDA7IGluZGV4KyspewogICAgICAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgICAgICAgICAgeDErKzsKICAgICAgICAgICAgICAgICAgICBpZih4MT49MTAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgeDE9MDsKICAgICAgICAgICAgICAgICAgICAgICAgeDIrKzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKHgxID4gMTApCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGFbaW5kZXhdICs9IGFbaW5kZXggLSAxMCoxXTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoeDIgPCA5NSkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgYVtpbmRleF0gKz0gYVtpbmRleCArIDUqMTAwXTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KYXV0byBlbmQgPSBjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CmF1dG8gZGlmZiA9IGVuZCAtIHN0YXJ0OwoKY291dCA8PCAibWV0aG9kIDg6ICIgPDwgY2hyb25vOjpkdXJhdGlvbiA8ZG91YmxlLCBuYW5vPiAoZGlmZikuY291bnQoKSA8PCAiIG5zIiA8PCBlbmRsOwoKCgkJCQlkb3VibGUgdGVtcDsKCQkJCWZvcihpbnQgaT0wO2k8MTAwMDA7aSsrKXsKCSAgICAJCXRlbXA9YVtpXTsKCQkJCWFbaV09YltpXTsKCQkJCWJbaV09dGVtcDsKCSAgICAgICAgfQoJCQkJCglzdGFydCA9IGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsJCQkJCSAgIAogICAgICAgICAgZm9yICggaTEgPSAxOyBpMSA8PSAxMDAwMDsgaTErKyl7CgkJCSAgICBpbmRleD0tMTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHgyID0gMDsgeDIgPCAxMDA7IHgyKyspewoJCQkJCQkgIGZvciAoIHgxID0gMDsgeDEgPCAxMDA7IHgxKyspewogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoeDEgPiAxMCl7CiAgICAgICAgICAgICAgICAgICAgICAgICBhW2luZGV4XSArPSBhW2luZGV4IC0gMTAqMV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKHgyIDwgOTUpewogICAgICAgICAgICAgICAgICAgICAgICAgYVtpbmRleF0gKz0gYVtpbmRleCArIDUqMTAwXTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KCQkgIH0KZW5kID0gY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwpkaWZmID0gZW5kIC0gc3RhcnQ7Cgpjb3V0IDw8ICJtZXRob2QgNiAiIDw8IGNocm9ubzo6ZHVyYXRpb24gPGRvdWJsZSwgbmFubz4gKGRpZmYpLmNvdW50KCkgPDwgIiBucyIgPDwgZW5kbDsKCXJldHVybiAwOwp9