#include <iostream>
using namespace std;
class Vector {
private:
int x, y;
public:
Vector() : x(0), y(0) {}
Vector(int x, int y) : x(x), y(y) {}
void Input() {
cin >> x >> y;
}
void Out() const {
cout << x << " " << y << endl;
}
Vector& operator=(const Vector& other) {
if (this != &other) {
x = other.x;
y = other.y;
}
return *this;
}
Vector operator+(const Vector& other) const {
return Vector(x + other.x, y + other.y);
}
Vector operator-(const Vector& other) const {
return Vector(x - other.x, y - other.y);
}
Vector& operator+=(const Vector& other) {
x += other.x;
y += other.y;
return *this;
}
Vector& operator-=(const Vector& other) {
x -= other.x;
y -= other.y;
return *this;
}
int operator*(const Vector& other) const {
return x * other.x + y * other.y;
}
};
int main() {
Vector a, b(3, 4), c;
a.Input();
a.Out();
b.Out();
c = a + b;
c.Out();
c -= b;
c.Out();
int scalar = a * b;
cout << scalar << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgVmVjdG9yIHsKcHJpdmF0ZToKICAgIGludCB4LCB5OwoKcHVibGljOgogICAgVmVjdG9yKCkgOiB4KDApLCB5KDApIHt9CgogICAgVmVjdG9yKGludCB4LCBpbnQgeSkgOiB4KHgpLCB5KHkpIHt9CgogICAgdm9pZCBJbnB1dCgpIHsKICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgfQoKICAgIHZvaWQgT3V0KCkgY29uc3QgewogICAgICAgIGNvdXQgPDwgeCA8PCAiICIgPDwgeSA8PCBlbmRsOwogICAgfQoKICAgIFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IFZlY3RvciYgb3RoZXIpIHsKICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKICAgICAgICAgICAgeCA9IG90aGVyLng7CiAgICAgICAgICAgIHkgPSBvdGhlci55OwogICAgICAgIH0KICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgVmVjdG9yIG9wZXJhdG9yKyhjb25zdCBWZWN0b3ImIG90aGVyKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIFZlY3Rvcih4ICsgb3RoZXIueCwgeSArIG90aGVyLnkpOwogICAgfQoKICAgIFZlY3RvciBvcGVyYXRvci0oY29uc3QgVmVjdG9yJiBvdGhlcikgY29uc3QgewogICAgICAgIHJldHVybiBWZWN0b3IoeCAtIG90aGVyLngsIHkgLSBvdGhlci55KTsKICAgIH0KCiAgICBWZWN0b3ImIG9wZXJhdG9yKz0oY29uc3QgVmVjdG9yJiBvdGhlcikgewogICAgICAgIHggKz0gb3RoZXIueDsKICAgICAgICB5ICs9IG90aGVyLnk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFZlY3RvciYgb3BlcmF0b3ItPShjb25zdCBWZWN0b3ImIG90aGVyKSB7CiAgICAgICAgeCAtPSBvdGhlci54OwogICAgICAgIHkgLT0gb3RoZXIueTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgaW50IG9wZXJhdG9yKihjb25zdCBWZWN0b3ImIG90aGVyKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIHggKiBvdGhlci54ICsgeSAqIG90aGVyLnk7CiAgICB9Cn07CgoKaW50IG1haW4oKSB7CiAgICBWZWN0b3IgYSwgYigzLCA0KSwgYzsKCiAgICBhLklucHV0KCk7CgogICAgYS5PdXQoKTsKCiAgICBiLk91dCgpOwoKICAgIGMgPSBhICsgYjsKICAgIGMuT3V0KCk7CgogICAgYyAtPSBiOwogICAgYy5PdXQoKTsKCiAgICBpbnQgc2NhbGFyID0gYSAqIGI7CiAgICBjb3V0IDw8IHNjYWxhciA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9