Pagini recente » Cod sursa (job #947573) | Cod sursa (job #885898) | Cod sursa (job #885800) | Cod sursa (job #263969) | Cod sursa (job #2123255)
#include <iostream>
#include <fstream>
#define ll long long
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
ll rza,rzp,peri,arie,p1,p2,p3,a1,a2,a3;
struct rect
{ ll lx,ly,rx,ry; } d,d1,d2,d3,aux;
void inter (rect a,rect b)
{
if(b.ly<a.ry&&b.rx>a.lx&&b.lx<a.rx)
{
ll l1=0,l2=0;
if(b.lx<=a.lx)
{
if(b.ry>a.ry) l1=abs(a.ry-b.ly);
if(b.ry<=a.ry) l1=abs(b.ry-b.ly);
d.lx=a.lx; d.ly=b.ly;
if(b.rx>a.rx) l2=abs(a.rx-a.lx);
if(b.rx<=a.rx) l2=abs(b.rx-a.lx);
}
if(b.lx>a.lx)
{
if(b.ry>a.ry) l1=abs(a.ry-b.ly);
if(b.ry<=a.ry) l1=abs(b.ry-b.ly);
d.lx=b.lx; d.ly=b.ly;
if(b.rx>a.rx) l2=abs(a.rx-b.lx);
if(b.rx<=a.rx) l2=abs(b.rx-b.lx);
}
d.rx=min(b.rx,a.rx);
d.ry=min(b.ry,a.ry);
arie=l1*l2;
peri=2*l1+2*l2;
}
else
{
arie=0; peri=0;
if(b.rx==a.lx) peri+=2*(abs(min(a.ry,b.ry)-max(a.ly,b.ly)));
if(b.ly==a.ry) peri+=2*(abs(min(a.rx,b.rx)-max(a.lx,b.lx)));
if(b.lx==a.rx) peri+=2*(abs(min(a.ry,b.ry)-max(a.ly,b.ly)));
}
}
int main () {
fin>>d1.lx>>d1.ly>>d1.rx>>d1.ry;
fin>>d2.lx>>d2.ly>>d2.rx>>d2.ry;
fin>>d3.lx>>d3.ly>>d3.rx>>d3.ry;
if(d1.ly>d2.ly) { aux=d1; d1=d2; d2=aux; }
if(d1.ly>d3.ly) { aux=d1; d1=d3; d3=aux; }
if(d2.ly>d3.ly) { aux=d2; d2=d3; d3=aux; }
a1=(d1.rx-d1.lx)*(d1.ry-d1.ly);
a2=(d2.rx-d2.lx)*(d2.ry-d2.ly);
a3=(d3.rx-d3.lx)*(d3.ry-d3.ly);
p1=2*(d1.rx-d1.lx)+2*(d1.ry-d1.ly);
p2=2*(d2.rx-d2.lx)+2*(d2.ry-d2.ly);
p3=2*(d3.rx-d3.lx)+2*(d3.ry-d3.ly);
rza=a1+a2+a3;
rzp=p1+p2+p3;
inter(d1,d2);
rza-=arie; rzp-=peri;
inter(d1,d3);
rza-=arie; rzp-=peri;
inter(d2,d3);
rza-=arie; rzp-=peri;
inter(d1,d2);
if(arie>0)
{
inter(d,d3);
if(arie>0)
{ rza+=arie; rzp+=peri; }
}
fout<<rza<<" "<<rzp<<"\n";
}