Cod sursa(job #838491)

Utilizator Toast97Calin Farcas Toast97 Data 19 decembrie 2012 20:27:23
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.1 kb
#include <fstream>

using namespace std;

int D1[10], D2[10], D3[10];

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

long long  arie( int a1, int a2,int b1,int b2, int c1, int c2,int d1,int d2 ) 
{
	
	int 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( int a1, int a2,int b1,int b2, int c1, int c2,int d1,int d2 ) 
{
	
	int 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;
}

int main()
{
	ifstream f("reuniune.in");
	ofstream g("reuniune.out");
	
	int 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;
}