Pagini recente » Cod sursa (job #1680951) | Cod sursa (job #376749) | Cod sursa (job #1014183) | Cod sursa (job #1648375) | Cod sursa (job #168688)
Cod sursa(job #168688)
#include<cstdio>
long long m(long long a,long long b)
{
if(a<b) return a;
return b;
}
long long M(long long a,long long b)
{
if(a<b) return b;
return a;
}
class d
{
public:
long long x1,x2,y1,y2;
d()
{
x1=x2=y1=y2=0;
}
long long arie()
{
return (x2-x1)*(y2-y1);
}
long long 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("%lld %lld %lld %lld",&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();
long long 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("%lld %lld",arie,perimetru);
fclose(stdout);
return 0;
}