Pagini recente » Cod sursa (job #3221492) | Cod sursa (job #632568) | Cod sursa (job #107972) | Cod sursa (job #3003294) | Cod sursa (job #3168328)
#include <iostream>
using namespace std;
#ifndef LOCAL
string name="reuniune";
ifstream in(name+".in");
ofstream out(name+".out");
#define cin in
#define cout out
#endif // LOCAL
#define int long long
struct dr{
int t,l,r,b;
dr reuniune(dr &other)
{
dr ans;
ans.l=max(l,other.l);
ans.r=min(r,other.r);
ans.t=min(t, other.t);
ans.b=max(b,other.b);
return ans;
}
pair<int,int> area()
{
if(l>r||b>t) return {0ll,0ll};
return {(r-l)*(t-b),2*(r-l+t-b)};
}
};
istream& operator >>(istream &in, dr &a)
{
in>>a.l>>a.b>>a.r>>a.t;
return in;
}
pair<int,int> operator +(const pair<int, int> &a,const pair<int,int > &b)
{
return {a.first+b.first, a.second+b.second};
}
pair<int,int> operator -(const pair<int, int> &a,const pair<int,int > &b)
{
return {a.first-b.first, a.second-b.second};
}
int32_t main()
{
dr a,b,c;
cin>>a>>b>>c;
pair<int,int> ans=a.area()+b.area()+c.area();
ans=ans-(a.reuniune(b).area()+b.reuniune(c).area()+c.reuniune(a).area());
ans=ans+a.reuniune(b).reuniune(c).area();
cout<<ans.first<<' '<<ans.second<<' '<<'\n';
return 0;
}
/*
0 0 8 6
4 2 11 9
2 -2 6 4
*/