#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
#include <numeric>
template<class T>
struct multiply_range : public std::binary_function<T, T, T> {
public:
multiply_range() : i(0), j(1) { }
T operator()(T a, T b) {
if (!(this->i++ % 2) && (this->j++ % 2)) {
return a * b;
}
}
private:
std::size_t i, j;
};
int main() {
std::vector<int> vec_numsx = {1,2,3,4,5};
std::vector<int> vec_numsy = {5,6,7,8,9,10};
std::cout << std::inner_product(vec_numsx.begin(),
vec_numsx.end(),
std::next(vec_numsy.begin()),
0,
std::plus<int>(),
multiply_range<int>());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG51bWVyaWM+CiAKdGVtcGxhdGU8Y2xhc3MgVD4Kc3RydWN0IG11bHRpcGx5X3JhbmdlIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPFQsIFQsIFQ+IHsKcHVibGljOgogICAgbXVsdGlwbHlfcmFuZ2UoKSA6IGkoMCksIGooMSkgeyB9CiAgICBUIG9wZXJhdG9yKCkoVCBhLCBUIGIpIHsKICAgICAgICBpZiAoISh0aGlzLT5pKysgJSAyKSAmJiAodGhpcy0+aisrICUgMikpIHsKICAgICAgICByZXR1cm4gYSAqIGI7CiAgICAgICAgICAgIH0KICAgIH0KcHJpdmF0ZToKICAgIHN0ZDo6c2l6ZV90IGksIGo7Cn07CiAKIAppbnQgbWFpbigpIHsKICAgIHN0ZDo6dmVjdG9yPGludD4gdmVjX251bXN4ID0gezEsMiwzLDQsNX07CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IHZlY19udW1zeSA9IHs1LDYsNyw4LDksMTB9OwogICAgc3RkOjpjb3V0IDw8IHN0ZDo6aW5uZXJfcHJvZHVjdCh2ZWNfbnVtc3guYmVnaW4oKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjX251bXN4LmVuZCgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om5leHQodmVjX251bXN5LmJlZ2luKCkpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnBsdXM8aW50PigpLAogICAgICAgICAgICAgICAgICAgIG11bHRpcGx5X3JhbmdlPGludD4oKSk7CiAgICByZXR1cm4gMDsKfQ==