Pagini recente » Cod sursa (job #385790) | Monitorul de evaluare | Cod sursa (job #3131940) | Cod sursa (job #2161040) | Cod sursa (job #2743820)
#include <fstream>
using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
struct point
{
long long x,y;
}a1,a2,b1,b2,c1,c2;
point s,d;
void intersectie(point p1,point p2,point m1,point m2)
{
s.y=max(p1.y,m1.y);
s.x=max(p1.x,m1.x);
d.y=min(p2.y,m2.y);
d.x=min(p2.x,m2.x);
}
int main()
{
long long p=0,a=0;
point s2,d2;
in>>a1.x>>a1.y>>a2.x>>a2.y;
a+=1ll*((a2.y-a1.y)*(a2.x-a1.x));
p+=1ll*((a2.y-a1.y)+(a2.x-a1.x));
in>>b1.x>>b1.y>>b2.x>>b2.y;
a+=1ll*((b2.y-b1.y)*(b2.x-b1.x));
p+=1ll*((b2.y-b1.y)+(b2.x-b1.x));
in>>c1.x>>c1.y>>c2.x>>c2.y;
a+=1ll*((c2.y-c1.y)*(c2.x-c1.x));
p+=1ll*((c2.y-c1.y)+(c2.x-c1.x));
intersectie(a1,a2,b1,b2);
if(s.x<=d.x && s.y<=d.y)
{
a-=1ll*((d.x-s.x)*(d.y-s.y));
p-=1ll*((d.x-s.x)+(d.y-s.y));
}
s2=s;
d2=d;
intersectie(s2,d2,c1,c2);
if(s.x<=d.x && s.y<=d.y)
{
a+=1ll*((d.x-s.x)*(d.y-s.y));
p+=1ll*((d.x-s.x)+(d.y-s.y));
}
intersectie(a1,a2,c1,c2);
if(s.x<=d.x && s.y<=d.y)
{
a-=1ll*((d.x-s.x)*(d.y-s.y));
p-=1ll*((d.x-s.x)+(d.y-s.y));
}
intersectie(b1,b2,c1,c2);
if(s.x<=d.x && s.y<=d.y)
{
a-=1ll*((d.x-s.x)*(d.y-s.y));
p-=1ll*((d.x-s.x)+(d.y-s.y));
}
p*=1ll*2;
out<<a<<" "<<p;
return 0;
}