Pagini recente » Cod sursa (job #1549634) | Cod sursa (job #383577) | Cod sursa (job #2523935) | Cod sursa (job #337478) | Cod sursa (job #2123199)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
int rza,rzp,peri,arie,p1,p2,p3,a1,a2,a3;
struct rect
{ int 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)
{
int l1=0,l2=0;
if(b.lx<a.lx)
{
if(b.ry>a.ry)
{
l1=a.ry-b.ly;
if(b.rx>a.rx) l2=a.rx-a.lx;
}
if(b.ry<=a.ry)
{
l1=b.ry-b.ly;
if(b.rx>a.rx) l2=a.rx-b.rx;
}
d.lx=a.lx; d.ly=b.ly;
if(b.rx<=a.rx) l2=b.rx-a.lx;
}
if(b.lx>a.lx)
{
if(b.ry>a.ry)
{
l1=a.ry-b.ly;
if(b.rx>a.rx) l2=a.rx-b.lx;
}
if(b.ry<=a.ry)
{
l1=b.ry-b.ly;
if(b.rx>a.rx) l2=a.rx-b.lx;
}
d.lx=b.lx; d.ly=b.ly;
if(b.rx<=a.rx) l2=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; }
}
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);
inter(d,d3);
rza+=arie; rzp+=peri;
fout<<rza<<" "<<rzp<<"\n";
}