Cod sursa(job #77747)

Utilizator andrei.12Andrei Parvu andrei.12 Data 14 august 2007 19:25:33
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.1 kb
#include<stdio.h>
int ar, p, ar1, ar2, ar3, art, p1, p2, p3, pt, a1, a2, a3;
struct punct{
	int x, y;
};
struct drept{
	punct sj, ds;
};
drept d1, d2, d3, r1, r2, r3, rt;
int verf(drept d1, drept d2){
	return (d1.sj.y <= d2.ds.y && d1.ds.x >= d2.sj.x && d2.sj.y <= d1.ds.y && d2.ds.x >= d1.sj.x);
}
punct ds(drept d1, drept d2){
	punct A;
	if (d1.ds.x < d2.ds.x)
		A.x = d1.ds.x;
	else
		A.x = d2.ds.x;
	if (d1.ds.y < d2.ds.y)
		A.y = d1.ds.y;
	else
		A.y = d2.ds.y;
	return A;
}
punct sj(drept d1, drept d2){
	punct A;
	if (d1.sj.x > d2.sj.x)
		A.x = d1.sj.x;
	else
		A.x = d2.sj.x;
	if (d1.sj.y > d2.sj.y)
		A.y = d1.sj.y;
	else
		A.y = d2.sj.y;
	return A;
}
void inchid(){
	printf("%d %d\n", ar, p);
	fclose(stdin);
	fclose(stdout);
}
int main()
{
	freopen("reuniune.in","r",stdin);
	freopen("reuniune.out","w",stdout);
	scanf("%d%d%d%d", &d1.sj.x, &d1.sj.y, &d1.ds.x, &d1.ds.y);
	scanf("%d%d%d%d", &d2.sj.x, &d2.sj.y, &d2.ds.x, &d2.ds.y);
	scanf("%d%d%d%d", &d3.sj.x, &d3.sj.y, &d3.ds.x, &d3.ds.y);
	a1 = verf(d1, d2);
	a3 = verf(d1, d3);
	a2 = verf(d2, d3);

	r1.ds = ds(d1, d2);
	r1.sj = sj(d1, d2);
	r2.ds = ds(d2, d3);
	r2.sj = sj(d2, d3);
	r3.ds = ds(d1, d3);
	r3.sj = sj(d1, d3);
	
	rt.ds = ds(r1, d3);
	rt.sj = sj(r1, d3);
	p1 = 2*(r1.ds.y-r1.sj.y)+2*(r1.ds.x-r1.sj.x);
	p2 = 2*(r2.ds.y-r2.sj.y)+2*(r2.ds.x-r2.sj.x);
	p3 = 2*(r3.ds.y-r3.sj.y)+2*(r3.ds.x-r3.sj.x);
	ar1 = (r1.ds.y-r1.sj.y)*(r1.ds.x-r1.sj.x);
	ar2 = (r2.ds.y-r2.sj.y)*(r2.ds.x-r2.sj.x);
	ar3 = (r3.ds.y-r3.sj.y)*(r3.ds.x-r3.sj.x);
	pt = 2*(rt.ds.y-rt.sj.y)+2*(rt.ds.x-rt.sj.x);
	art = (rt.ds.y-rt.sj.y)*(rt.ds.x-rt.sj.x);
	if (!a1){
		p1 = 0;
		ar1 = 0;
		art = 0;
		pt = 0;
	}
	if (!a2){
		p2 = 0;
		ar2 = 0;
		art = 0;
		pt = 0;
	}
	if (!a3){
		p3 = 0;
		ar3 = 0;
		art = 0;
		pt = 0;
	}
	ar = (d1.ds.y-d1.sj.y)*(d1.ds.x-d1.sj.x)+(d2.ds.y-d2.sj.y)*(d2.ds.x-d2.sj.x)+(d3.ds.y-d3.sj.y)*(d3.ds.x-d3.sj.x)-ar1-ar2-ar3+art;
	p =  2*(d1.ds.y-d1.sj.y)+2*(d1.ds.x-d1.sj.x)+2*(d2.ds.y-d2.sj.y)+2*(d2.ds.x-d2.sj.x)+2*(d3.ds.y-d3.sj.y)+2*(d3.ds.x-d3.sj.x)-p1-p2-p3+pt;
	inchid();
	return 0;
}