#include <iostream>
using namespace std;
class Point
{
int x, y;
public:
Point(int _x=0, int _y=0):x(_x), y(_y) {}
void show();
Point operator+(const Point& p)
{
Point temp(x+p.x, y+p.y);
return temp;
}
};
void Point::show()
{
cout<<x<<" "<<y<<endl;
}
template <typename T>
T Add(T a, T b)
{
return a+b;
}
template <typename T>
void Swap(T& a, T& b)
{
T temp;
temp = a;
a = b;
b = temp;
return;
}
int main() {
// your code goes here
Point p1(1,2);
Point p2(100,200);
p1.show();
p2.show();
Swap(p1,p2);
p1.show();
p2.show();
int a = 10;
int b = 20;
Swap(a, b);
cout<<"fff"<<a<<" "<<b<<endl;
Point p3=Add(p1,p2);
p3.show();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUG9pbnQKewoJaW50IHgsIHk7CnB1YmxpYzoKCVBvaW50KGludCBfeD0wLCBpbnQgX3k9MCk6eChfeCksIHkoX3kpIHt9Cgl2b2lkIHNob3coKTsKCVBvaW50IG9wZXJhdG9yKyhjb25zdCBQb2ludCYgcCkKCXsKCQlQb2ludCB0ZW1wKHgrcC54LCB5K3AueSk7CgkJcmV0dXJuIHRlbXA7Cgl9Cn07CnZvaWQgUG9pbnQ6OnNob3coKQp7Cgljb3V0PDx4PDwiICI8PHk8PGVuZGw7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpUIEFkZChUIGEsIFQgYikKewoJcmV0dXJuIGErYjsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgU3dhcChUJiBhLCBUJiBiKQp7CglUIHRlbXA7Cgl0ZW1wID0gYTsKCWEgPSBiOwoJYiA9IHRlbXA7CglyZXR1cm47Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJUG9pbnQgcDEoMSwyKTsKCVBvaW50IHAyKDEwMCwyMDApOwoJcDEuc2hvdygpOwoJcDIuc2hvdygpOwoJU3dhcChwMSxwMik7CglwMS5zaG93KCk7CglwMi5zaG93KCk7CgkKCWludCBhID0gMTA7CglpbnQgYiA9IDIwOwoJU3dhcChhLCBiKTsKCWNvdXQ8PCJmZmYiPDxhPDwiICI8PGI8PGVuZGw7CgkKCVBvaW50IHAzPUFkZChwMSxwMik7CglwMy5zaG93KCk7CglyZXR1cm4gMDsKfQ==