Pagini recente » Cod sursa (job #2697612) | Cod sursa (job #2568746) | Cod sursa (job #2456426) | Cod sursa (job #536148) | Cod sursa (job #168685)
Cod sursa(job #168685)
#include<cstdio>
int m(int a,int b)
{
if(a<b) return a;
return b;
}
int M(int a,int b)
{
if(a<b) return b;
return a;
}
class d
{
public:
int x1,x2,y1,y2;
d()
{
x1=x2=y1=y2=0;
}
int arie()
{
return (x2-x1)*(y2-y1);
}
int perimetru()
{
return 2*(x2-x1+y2-y1);
}
d reuniune(d a)
{
d b;
if(x2<a.x1 || a.x2<x1) return b;
if(y2<a.y1 || a.y2<a.y1) return b;
b.x1=M(x1,a.x1);
b.x2=m(x2,a.x2);
b.y1=M(y1,a.y1);
b.y2=m(y2,a.y2);
return b;
}
void read()
{
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
}
};
int main()
{
freopen("reuniune.in","r",stdin);
freopen("reuniune.out","w",stdout);
d a,b,c;
a.read();
b.read();
c.read();
int arie=0,perimetru=0;
arie+=a.arie();
arie+=b.arie();
arie+=c.arie();
arie-=a.reuniune(b).arie();
arie-=a.reuniune(c).arie();
arie-=b.reuniune(c).arie();
arie+=a.reuniune(b.reuniune(c)).arie();
perimetru+=a.perimetru();
perimetru+=b.perimetru();
perimetru+=c.perimetru();
perimetru-=a.reuniune(b).perimetru();
perimetru-=b.reuniune(c).perimetru();
perimetru-=c.reuniune(a).perimetru();
perimetru+=a.reuniune(b.reuniune(c)).perimetru();
printf("%d %d",arie,perimetru);
fclose(stdout);
return 0;
}