#include <algorithm>
#include <iostream>
#include <iterator>
#include <ostream>
#include <numeric>
#include <cstdlib>
#include <vector>
using namespace std;
template<typename InputIterator1,typename InputIterator2,typename ValueType>
ValueType dot_product( InputIterator1 first, InputIterator1 last, InputIterator2 another, ValueType init)
{
while(first!=last)
{
init += (*first) * (*another) ;
++first;
++another;
}
return init;
}
int main()
{
vector<int> v1,v2;
generate_n( back_inserter(v1), 256, rand );
generate_n( back_inserter(v2), v1.size(), rand );
cout << dot_product( v1.begin(), v1.end(), v2.begin(), 0 ) << endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxvc3RyZWFtPgojaW5jbHVkZSA8bnVtZXJpYz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsdHlwZW5hbWUgVmFsdWVUeXBlPgpWYWx1ZVR5cGUgZG90X3Byb2R1Y3QoIElucHV0SXRlcmF0b3IxIGZpcnN0LCBJbnB1dEl0ZXJhdG9yMSBsYXN0LCBJbnB1dEl0ZXJhdG9yMiBhbm90aGVyLCBWYWx1ZVR5cGUgaW5pdCkKewogICAgd2hpbGUoZmlyc3QhPWxhc3QpCiAgICB7CiAgICAgICAgaW5pdCArPSAoKmZpcnN0KSAqICgqYW5vdGhlcikgOwogICAgICAgICsrZmlyc3Q7CiAgICAgICAgKythbm90aGVyOwogICAgfQogICAgcmV0dXJuIGluaXQ7Cn0KCmludCBtYWluKCkKewogICAgdmVjdG9yPGludD4gdjEsdjI7CiAgICBnZW5lcmF0ZV9uKCBiYWNrX2luc2VydGVyKHYxKSwgMjU2LCByYW5kICk7CiAgICBnZW5lcmF0ZV9uKCBiYWNrX2luc2VydGVyKHYyKSwgdjEuc2l6ZSgpLCByYW5kICk7CiAgICBjb3V0IDw8IGRvdF9wcm9kdWN0KCB2MS5iZWdpbigpLCB2MS5lbmQoKSwgdjIuYmVnaW4oKSwgMCApIDw8IGVuZGw7Cn0K