Cod sursa(job #531467)

Utilizator SadmannCornigeanu Calin Sadmann Data 9 februarie 2011 18:46:31
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<stdio.h>
#include<fstream>
FILE *in,*out;
using namespace std;
typedef struct dreptunghi
{
	long long int x1,y1;
	long long int x2,y2;
};

long long int perimetru(dreptunghi x)
{
	return 2*(x.x2-x.x1)+2*(x.y2-x.y1);

}
long long int aria(dreptunghi x)
{
	return (x.x2-x.x1)*(x.y2-x.y1);
}

long long int max(long long int x, long long int y)
{
	if(x>y)
		return x;
	return y;
}

long long int min(long long int x, long long int y)
{
	if(x<y)
		return x;
	return y;
}

dreptunghi intersectie(dreptunghi x, dreptunghi y)
{
	dreptunghi i;
    i.x1=max(x.x1,y.x1);
    i.y1=max(x.y1,y.y1);
    i.x2=min(x.x2,y.x2);
    i.y2=min(x.y2,y.y2);
    if(i.x1>i.x2 || i.y1>i.y2)
        i.x1=i.x2=i.y1=i.y2=0;
    return i;

}

dreptunghi a,b,c;
int main()
{
	ifstream in("reuniune.in");
	out=fopen("reuniune.out","wt");
	in>>a.x1>>a.y1>>a.x2>>a.y2;
	in>>b.x1>>b.y1>>b.x2>>b.y2;
	in>>c.x1>>c.y1>>c.x2>>c.y2;
	
	fprintf(out,"%lld ",aria(a)+aria(b)+aria(c)-aria(intersectie(a,b))-aria(intersectie(b,c))-aria(intersectie(a,c))+aria(intersectie(intersectie(b,c),a)));

	
	fprintf(out,"%lld",perimetru(a)+perimetru(b)+perimetru(c)-perimetru(intersectie(a,b))-perimetru(intersectie(b,c))
						-perimetru(intersectie(a,c))+perimetru(intersectie(intersectie(b,c),a)));  
	return 0;
}