#include <iostream>
using namespace std;
#include <time.h>
const int iterations = 1000000000;
double sequential(){
double a = 2.3;
double result = 0;
for (int c = 0; c < iterations; c++){
result += a;
}
return result;
}
double optimized(){
double a = 2.3;
double result0 = 0;
double result1 = 0;
double result2 = 0;
double result3 = 0;
for (int c = 0; c < iterations; c += 4){
result0 += a;
result1 += a;
result2 += a;
result3 += a;
}
return result0 + result1 + result2 + result3;
}
int main(){
clock_t start0 = clock();
double sum0 = sequential();
clock_t end0 = clock();
cout << "sum = " << sum0 << endl;
cout << "sequential time: " << (double)(end0 - start0) / CLOCKS_PER_SEC << endl;
clock_t start1 = clock();
double sum1 = optimized();
clock_t end1 = clock();
cout << "sum = " << sum1 << endl;
cout << "optimized time: " << (double)(end1 - start1) / CLOCKS_PER_SEC << endl;
int b; cin >> b;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2luY2x1ZGUgPHRpbWUuaD4KCmNvbnN0IGludCBpdGVyYXRpb25zID0gMTAwMDAwMDAwMDsKCmRvdWJsZSBzZXF1ZW50aWFsKCl7Cglkb3VibGUgYSA9IDIuMzsKCWRvdWJsZSByZXN1bHQgPSAwOwoKCWZvciAoaW50IGMgPSAwOyBjIDwgaXRlcmF0aW9uczsgYysrKXsKCQlyZXN1bHQgKz0gYTsKCX0KCglyZXR1cm4gcmVzdWx0Owp9CmRvdWJsZSBvcHRpbWl6ZWQoKXsKCWRvdWJsZSBhID0gMi4zOwoJZG91YmxlIHJlc3VsdDAgPSAwOwoJZG91YmxlIHJlc3VsdDEgPSAwOwoJZG91YmxlIHJlc3VsdDIgPSAwOwoJZG91YmxlIHJlc3VsdDMgPSAwOwoKCWZvciAoaW50IGMgPSAwOyBjIDwgaXRlcmF0aW9uczsgYyArPSA0KXsKCQlyZXN1bHQwICs9IGE7CgkJcmVzdWx0MSArPSBhOwoJCXJlc3VsdDIgKz0gYTsKCQlyZXN1bHQzICs9IGE7Cgl9CgoJcmV0dXJuIHJlc3VsdDAgKyByZXN1bHQxICsgcmVzdWx0MiArIHJlc3VsdDM7Cn0KCmludCBtYWluKCl7CgoJY2xvY2tfdCBzdGFydDAgPSBjbG9jaygpOwoJZG91YmxlIHN1bTAgPSBzZXF1ZW50aWFsKCk7CgljbG9ja190IGVuZDAgPSBjbG9jaygpOwoJY291dCA8PCAic3VtID0gIiA8PCBzdW0wIDw8IGVuZGw7Cgljb3V0IDw8ICJzZXF1ZW50aWFsIHRpbWU6ICIgPDwgKGRvdWJsZSkoZW5kMCAtIHN0YXJ0MCkgLyBDTE9DS1NfUEVSX1NFQyA8PCBlbmRsOwoKCWNsb2NrX3Qgc3RhcnQxID0gY2xvY2soKTsKCWRvdWJsZSBzdW0xID0gb3B0aW1pemVkKCk7CgljbG9ja190IGVuZDEgPSBjbG9jaygpOwoJY291dCA8PCAic3VtID0gIiA8PCBzdW0xIDw8IGVuZGw7Cgljb3V0IDw8ICJvcHRpbWl6ZWQgdGltZTogICIgPDwgKGRvdWJsZSkoZW5kMSAtIHN0YXJ0MSkgLyBDTE9DS1NfUEVSX1NFQyA8PCBlbmRsOwoKCWludCBiOyBjaW4gPj4gYjsKfQ==