Pagini recente » Borderou de evaluare (job #406937) | Cod sursa (job #282705) | Borderou de evaluare (job #2901085) | Cod sursa (job #2647194) | Cod sursa (job #3166710)
#include <bits/stdc++.h>
#ifdef LOCAL
#define in cin
#define out cout
#endif
#define int int64_t
using namespace std;
#ifndef LOCAL
ifstream in("reuniune.in");
ofstream out("reuniune.out");
#endif
struct rect
{
int st,dr,sus,jos;
rect(int st=0,int dr=0,int sus=0,int jos=0):st(st),dr(dr),sus(sus),jos(jos){}
int area()
{
if(dr<st||sus<jos)return 0;
return (sus-jos)*(dr-st);
}
int peri()
{
if(dr<st||sus<jos)return 0;
return ((sus-jos)+(dr-st))*2;
}
rect inter(const rect &other)
{
rect res = rect(max(st,other.st),min(dr,other.dr),min(sus,other.sus),max(jos,other.jos));
return res;
}
};
signed main()
{
rect rects[3];
for(int i=0;i<3;i++)
{
int a,b,c,d;in>>a>>b>>c>>d;
rects[i]=rect(a,c,d,b);
}
out<<rects[0].area()+rects[1].area()+rects[2].area()-
rects[0].inter(rects[1]).area()-rects[1].inter(rects[2]).area()-rects[0].inter(rects[2]).area()+
rects[0].inter(rects[1]).inter(rects[2]).area()<<' ';
out<<rects[0].peri()+rects[1].peri()+rects[2].peri()-
rects[0].inter(rects[1]).peri()-rects[1].inter(rects[2]).peri()-rects[0].inter(rects[2]).peri()+
rects[0].inter(rects[1]).inter(rects[2]).peri();
}