Cod sursa(job #728704)

Utilizator RaduDoStochitoiu Radu RaduDo Data 28 martie 2012 21:49:55
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<iostream>
#include<cstdio>
using namespace std;
int i;
struct drept {int x1,x2,y1,y2;} v[5];
int aria(drept d)
{
	return (d.x2-d.x1)*(d.y2-d.y1);
}
int per(drept d)
{
	return 2*((d.x2-d.x1)+(d.y2-d.y1));
}
drept inter(drept a,drept b)
{
	drept d;
	d.x1=max(a.x1,b.x1);
	d.x2=min(a.x2,b.x2);
	d.y1=max(a.y1,b.y1);
	d.y2=min(a.y2,b.y2);
	if(d.x1>d.x2||d.y1>d.y2)
		d.x1=d.x2=d.y1=d.y2=0;
	return d;
}
int main()
{
	freopen("reuniune.in","r",stdin);
	freopen("reuniune.out","w",stdout);
	for(i=1;i<=3;++i)
		scanf("%d%d%d%d",&v[i].x1,&v[i].y1,&v[i].x2,&v[i].y2);
	printf("%d ",aria(v[1])+aria(v[2])+aria(v[3])-aria(inter(v[1],v[2]))-aria(inter(v[1],v[3]))-aria(inter(v[2],v[3]))+aria(inter(inter(v[1],v[2]),v[3])));
	printf("%d\n",per(v[1])+per(v[2])+per(v[3])-per(inter(v[1],v[2]))-per(inter(v[1],v[3]))-per(inter(v[2],v[3]))+per(inter(inter(v[1],v[2]),v[3])));
	return 0;
}