Cod sursa(job #838759)

Utilizator Toast97Calin Farcas Toast97 Data 20 decembrie 2012 14:22:22
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.26 kb
#include <fstream>

using namespace std;

long long D1[5], D2[5], D3[5];

long long a,b,c,d,arietot,minx1,miny1,maxx0,maxy0,l1,l2,perimtot;

long long arie( long long a1, long long a2,long long b1,long long b2, long long c1, long long c2,long long d1,long long d2 ) 
{
	
	long long l1,l2;
	
	if(a1>a2) a=a1;
	else a=a2;
	
	if(b1>b2) b=b1;
	else b=b2;
	
	if(c1<c2) c=c1;
	else c=c2;
	
	if(d1<d2) d=d1;
	else d=d2;

    l1=c-a;
	if(l1<0)l1=0;
	
	l2=d-b;
	if(l2<0) l2=0;
	
	return l1*l2;
}

long long perim( long long a1, long long a2,long long b1,long long b2, long long c1, long long c2,long long d1,long long d2 ) 
{
	
	long long l1,l2;
	
	if(a1>a2) a=a1;
	else a=a2;
	
	if(b1>b2) b=b1;
	else b=b2;
	
	if(c1<c2) c=c1;
	else c=c2;
	
	if(d1<d2) d=d1;
	else d=d2;

    l1=c-a;
	if(l1<0)l1=0;
	
	l2=d-b;
	if(l2<0) l2=0;
	
	return l1*2+l2*2;
}

long long main()
{
	ifstream f("reuniune.in");
	ofstream g("reuniune.out");
	
	long long i;
	
	for(i=1;i<=4;i++) f>>D1[i];
	for(i=1;i<=4;i++) f>>D2[i];
	for(i=1;i<=4;i++) f>>D3[i];
	
	arietot=(D1[3]-D1[1])*(D1[4]-D1[2])+(D2[3]-D2[1])*(D2[4]-D2[2])+(D3[3]-D3[1])*(D3[4]-D3[2]) - arie(D1[1],D2[1],D1[2],D2[2],D1[3],D2[3],D1[4],D2[4]) - arie(D1[1],D3[1],D1[2],D3[2],D1[3],D3[3],D1[4],D3[4]) - arie(D2[1],D3[1],D2[2],D3[2],D2[3],D3[3],D2[4],D3[4]);
	
	maxx0=D1[1];
	minx1=D1[3];
	maxy0=D1[2];
	miny1=D1[4];
	
	if(D1[1]>maxx0) maxx0=D1[1];
	if(D2[1]>maxx0) maxx0=D2[1];
	if(D3[1]>maxx0) maxx0=D3[1];
	
	if(D1[2]>maxy0) maxy0=D1[2];
	if(D2[2]>maxy0) maxy0=D2[2];
	if(D3[2]>maxy0) maxy0=D3[2];
	
	if(D1[3]<minx1) minx1=D1[3];
	if(D2[3]<minx1) minx1=D2[3];
	if(D3[3]<minx1) minx1=D3[3];
	
	if(D1[4]<miny1) miny1=D1[4];
	if(D2[4]<miny1) miny1=D2[4];
	if(D3[4]<miny1) miny1=D3[4];
	
	l1=minx1-maxx0;
	l2=miny1-maxy0;
	
	if(l1<0) l1=0;
	if(l2<0) l2=0;
	
	arietot=arietot+l1*l2;
	
	perimtot=(D1[3]-D1[1])*2+(D1[4]-D1[2])*2+(D2[3]-D2[1])*2+(D2[4]-D2[2])*2+(D3[3]-D3[1])*2+(D3[4]-D3[2])*2 - perim(D1[1],D2[1],D1[2],D2[2],D1[3],D2[3],D1[4],D2[4]) - perim(D1[1],D3[1],D1[2],D3[2],D1[3],D3[3],D1[4],D3[4]) - perim(D2[1],D3[1],D2[2],D3[2],D2[3],D3[3],D2[4],D3[4]);

    perimtot=perimtot+l1*2+l2*2;
	
	g<<arietot<<" "<<perimtot;

	f.close();
	g.close();
	return 0;

}