#include <iostream>
#include <vector>
template <typename T>
int operator+(std::vector<T> v1, std::vector<T> v2) {
if(v1.size() != v2.size()) { throw; } //for simplicity
int sum = 0;
for(size_t x = 0; x < v1.size(); x++) {
sum += v1.at(x) + v2.at(x);
}
return sum;
}
int main() {
std::vector<int> v1(3, 5), v2(3, 1);
std::cout << v1 + v2 << std::endl; //should be 5*3 + 3*1 = 18
std::vector<std::vector<int>> v3(2, std::vector<int>(3, 5)), v4(2, std::vector<int>(3, 1));
std::cout << v3 + v4 << std::endl; //should be 5*3*2 + 3*1*2 = 36
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmludCBvcGVyYXRvcisoc3RkOjp2ZWN0b3I8VD4gdjEsIHN0ZDo6dmVjdG9yPFQ+IHYyKSB7CglpZih2MS5zaXplKCkgIT0gdjIuc2l6ZSgpKSB7IHRocm93OyB9IC8vZm9yIHNpbXBsaWNpdHkKCWludCBzdW0gPSAwOwoJZm9yKHNpemVfdCB4ID0gMDsgeCA8IHYxLnNpemUoKTsgeCsrKSB7CgkJc3VtICs9IHYxLmF0KHgpICsgdjIuYXQoeCk7Cgl9CglyZXR1cm4gc3VtOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yPGludD4gdjEoMywgNSksIHYyKDMsIDEpOwoJc3RkOjpjb3V0IDw8IHYxICsgdjIgPDwgc3RkOjplbmRsOyAvL3Nob3VsZCBiZSA1KjMgKyAzKjEgPSAxOAoJCglzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxpbnQ+PiB2MygyLCBzdGQ6OnZlY3RvcjxpbnQ+KDMsIDUpKSwgdjQoMiwgc3RkOjp2ZWN0b3I8aW50PigzLCAxKSk7CglzdGQ6OmNvdXQgPDwgdjMgKyB2NCA8PCBzdGQ6OmVuZGw7IC8vc2hvdWxkIGJlIDUqMyoyICsgMyoxKjIgPSAzNgoJCglyZXR1cm4gMDsKfQ==