Cod sursa(job #329068)

Utilizator iulia609fara nume iulia609 Data 4 iulie 2009 16:37:56
Problema Reuniune Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 8.06 kb
#include<stdio.h>
//#include<math.h>
using namespace std;

int main()
{ long long a3,b3,c3,d3,ok3a,ok3b,ok3c,ok3d,okab,okac,okbc,x0a,y0a,x1a,y1a,x0b,x1b,y0b,y1b,x0c,x1c,y0c,y1c,A,ok0a,ok1a,Aa,Pa,P,ok0b,ok1b,Ab,Pb,ok0xc,ok1xc,Ac,Pc,ok0yc,ok1yc,a,oka,ok0xa,ok0xb,b,okb,ok1xb,ok1xa,c,okc,ok0ya,ok0yb,d,okd,ok1ya,ok1yb,a1,b1,c1,d1,ok1c,ok1d,Aab,Pab,a2,b2,c2,d2,ok2a,ok2b,ok2c,ok2d,Aac,Pac,Abc,Pbc,Aabc,Pabc;

	FILE *f = fopen("reuniune.in", "r");
	FILE *g = fopen("reuniune.out", "w");
	
	fscanf(f, "%lld%lld%lld%lld", &x0a, &y0a, &x1a, &y1a);
	fscanf(f, "%lld%lld%lld%lld", &x0b, &y0b, &x1b, &y1b);
	fscanf(f, "%lld%lld%lld%lld", &x0c, &y0c, &x1c, &y1c);
	
	A = 0; P = 0;
	// primul
	ok0xa = ok1xa = 0; 
	if(x0a < 0)  ok0xa = 1;
	if(x1a < 0)  ok1xa = 1;
	
	if(ok0xa == 0 && ok1xa == 0) Aa = Pa = (x1a - x0a);
	else if(ok0xa == 1 && ok1xa == 1) Aa = Pa = (x1a + x0a)*-1;
	else if(ok0xa == 1 && ok1xa == 0) Aa = Pa = (x1a + (x0a*-1));
	
	ok0ya = ok1ya = 0; 
	if(y0a < 0)  ok0ya = 1;
	if(y1a < 0)  ok1ya = 1;
	
	if(ok0ya == 0 && ok1ya == 0) Aa *= (y1a - y0a), Pa += (y1a - y0a);
	else if(ok0ya == 1 && ok1ya == 1) Aa *= (y1a + y0a)*-1, Pa += (y1a + y0a)*-1;
	else if(ok0ya == 1 && ok1ya == 0) Aa *= (y1a + (y0a*-1)), Pa += (y1a + (y0a*-1));
	
	A += Aa;
	P += Pa*2;
	
	//al doilea
	ok0xb = ok1xb = 0; 
	if(x0b < 0)  ok0xb = 1;
	if(x1b < 0)  ok1xb = 1;
	
	if(ok0xb == 0 && ok1xb == 0) Ab = Pb = (x1b - x0b);
	else if(ok0xb == 1 && ok1xb == 1) Ab = Pb = (x1b + x0b)*-1;
	else if(ok0xb == 1 && ok1xb == 0) Ab = Pb = (x1b + (x0b*-1));
	
	ok0yb = ok1yb = 0; 
	if(y0b < 0)  ok0yb = 1;
	if(y1b < 0)  ok1yb = 1;
	
	if(ok0yb == 0 && ok1yb == 0) Ab *= (y1b - y0b), Pb += (y1b - y0b);
	else if(ok0yb == 1 && ok1yb == 1) Ab *= (y1b + y0b)*-1, Pb += (y1b + y0b)*-1;
	else if(ok0yb == 1 && ok1yb == 0) Ab *= (y1b + (y0b*-1)), Pb += (y1b + (y0b*-1));
	
	A += Ab;
	P += Pb*2;
	
	// al treilea
	
	ok0xc = ok1xc = 0; 
	if(x0c < 0)  ok0xc = 1;
	if(x1c < 0)  ok1xc = 1;
	
	if(ok0xc == 0 && ok1xc == 0) Ac = Pc = (x1c - x0c);
	else if(ok0xc == 1 && ok1xc == 1) Ac = Pc = (x1c + x0c)*-1;
	else if(ok0xc == 1 && ok1xc == 0) Ac = Pc = (x1c + (x0c*-1));
	
	ok0yc = ok1yc = 0; 
	if(y0c < 0)  ok0yc = 1;
	if(y1c < 0)  ok1yc = 1;
	
	if(ok0yc == 0 && ok1yc == 0) Ac *= (y1c - y0c), Pc += (y1c - y0c);
	else if(ok0yc == 1 && ok1yc == 1) Ac *= (y1c + y0c)*-1, Pc += (y1c + y0c)*-1;
	else if(ok0yc == 1 && ok1yc == 0) Ac *= (y1c + (y0c*-1)), Pc += (y1c + (y0c*-1));
	
	A += Ac;
	P += Pc*2;
	
	// Aab
	
	if((x0a>x1b && x1a<x0b) ||(y0a>y1b && y1a<y0b)) Aab = 0, Pab = 0, okab = 1;
	else{
	if(x0a > x0b) a = x0a, oka = ok0xa; else a = x0b, oka = ok0xb; 
	if(x1a < x1b) b = x1a, okb = ok1xa; else b = x1b, okb = ok1xb; 
	if(y0a > y0b) c = y0a, okc = ok0ya; else c = y0b, okc = ok0yb; 
	if(y1a < y1b) d = y1a, okd = ok1ya; else d = y1b, okd = ok1yb; 
	
	a1 = a, b1 = b, c1 = c, d1 = d;	
	ok1a = oka, ok1b = okb, ok1c = okc, ok1d = okd;
	
	
	if(oka == 0 && okb == 0) Aab = Pab = (b - a);
	else if(oka == 1 && okb == 1) Aab = Pab = (a + b)*-1;
	else if(oka == 1 && okb == 0) Aab = Pab = (b + (a*-1));
	else if(oka == 0 && okb == 1) Aab = Pab = (a + (b*-1));
	
	if(okc == 0 && okd == 0) Aab *= (d - c), Pab += (d - c);
	else if(okc == 1 && okd == 1) Aab *= (c + d)*-1, Pab += (c + d)*-1;
	else if(okc == 0 && okd == 1) Aab *= (c + (d*-1)), Pab += (c + (d*-1));
	else if(okc == 1 && okd == 0) Aab *= (d + (c*-1)), Pab += (d + (c*-1));
}
	A -= Aab;
	P -= Pab*2;
	
	// Aac
	
	if((x0a>x1c && x1a<x0c) ||(y0a>y1c &&y1a<y0c)) Aac = 0, Pac = 0, okac = 1;
	else{
	if(x0a > x0c) a = x0a, oka = ok0xa; else a = x0c, oka = ok0xc; 
	if(x1a < x1c) b = x1a, okb = ok1xa; else b = x1c, okb = ok1xc; 
	if(y0a > y0c) c = y0a, okc = ok0ya; else c = y0c, okc = ok0yc; 
	if(y1a < y1c) d = y1a, okd = ok1ya; else d = y1c, okd = ok1yc; 
	
	a2 = a, b2 = b, c2 = c, d2 = d;
	ok2a = oka, ok2b = okb, ok2c = okc, ok2d = okd;
	
	
	if(oka == 0 && okb == 0) Aac = Pac = (b - a);
	else if(oka == 1 && okb == 1) Aac = Pac = (a + b)*-1;
	else if(oka == 0 && okb == 1) Aac = Pac = (a + (b*-1));
	else if(oka == 1 && okb == 0) Aac = Pac = (b + (a*-1));
	
	if(okc == 0 && okd == 0) Aac *= (d - c), Pac += (d - c);
	else if(okc == 1 && okd == 1) Aac *= (c + d)*-1, Pac += (c + d)*-1;
	else if(okc == 0 && okd == 1) Aac *= (c + (d*-1)), Pac += (c + (d*-1));
	else if(okc == 1 && okd == 0) Aac *= (d + (c*-1)), Pac += (d + (c*-1));
}
	A -= Aac;
	P -= Pac*2;
	// Abc
	
	if((x0b>x1c && x1b<x0c) ||(y0b>y1c && y1b<y0c)) Abc = 0, Pbc = 0, okbc = 1;
	else{
	if(x0b > x0c) a = x0b, oka = ok0xb; else a = x0c, oka = ok0xc; 
	if(x1b < x1c) b = x1b, okb = ok1xb; else b = x1c, okb = ok1xc; 
	if(y0b > y0c) c = y0b, okc = ok0yb; else c = y0c, okc = ok0yc; 
	if(y1b < y1c) d = y1b, okd = ok1yb; else d = y1c, okd = ok1yc; 
	
	a3 = a, b3 = b, c3 = c, d3 = d;
	ok3a = oka, ok3b = okb, ok3c = okc, ok3d = okd;
	
	if(oka == 0 && okb == 0) Abc = Pbc = (b - a);
	else if(oka == 1 && okb == 1) Abc = Pbc = (a + b)*-1;
	else if(oka == 1 && okb == 0) Abc = Pbc = (a + (b*-1));
	else if(oka == 0 && okb == 1) Abc = Pbc = (b + (a*-1));
	
	if(okc == 0 && okd == 0) Abc *= (d - c), Pbc += (d - c);
	else if(okc == 1 && okd == 1) Abc *= (c + d)*-1, Pbc += (c + d)*-1;
	else if(okc == 0 && okd == 1) Abc *= (c + (d*-1)), Pbc += (c + (d*-1));
	else if(okc == 1 && okd == 0) Abc *= (d + (c*-1)), Pbc += (d + (c*-1));
	}
	A -= Abc;
	P -= Pbc*2;
	
	// Aab, Aac
	Aabc = Pabc = 0;
	if(okab != 1 && okac != 1)
	{
	if(a1 > a2) a = a1, oka = ok1a; else a = a2, oka = ok2a; 
	if(b1 < b2) b = b1, okb = ok1b; else b = b2, okb = ok2b; 
	if(c1 > c2) c = c1, okc = ok1c; else c = c2, okc = ok2c; 
	if(d1 < d2) d = d1, okd = ok1d; else d = d2, okd = ok2d;
if((a1>b2 && a2<b1) || (c1>d2 && c2<d1)) Aabc = 0, Pabc = 0;
	else{
	if(oka == 0 && okb == 0) Aabc = Pabc = (b - a);
	else if(oka == 1 && okb == 1) Aabc = Pabc = (a + b)*-1;
	else if(oka == 0 && okb == 1) Aabc = Pabc = (a + (b*-1));
	else if(oka == 1 && okb == 0) Aabc = Pabc = (b + (a*-1));
	
	if(okc == 0 && okd == 0) Aabc *= (d - c), Pabc += (d - c);
	else if(okc == 1 && okd == 1) Aabc *= (c + d)*-1, Pabc += (c + d)*-1;
	else if(okc == 0 && okd == 1) Aabc *= (c + (d*-1)), Pabc += (c + (d*-1));
	else if(okc == 1 && okd == 0) Aabc *= (d + (c*-1)), Pabc += (d + (c*-1));
}}
//Aab, Abc
	else if(okab != 1 && okbc != 1)
	{
	if(a1 > a3) a = a1, oka = ok1a; else a = a3, oka = ok3a; 
	if(b1 < b3) b = b1, okb = ok1b; else b = b3, okb = ok3b; 
	if(c1 > c3) c = c1, okc = ok1c; else c = c3, okc = ok3c; 
	if(d1 < d3) d = d1, okd = ok1d; else d = d3, okd = ok3d;
if((a1>b3 && a3<b1) || (c1>d3 && c3<d1)) Aabc = 0, Pabc = 0;
	else{
	if(oka == 0 && okb == 0) Aabc = Pabc = (b - a);
	else if(oka == 1 && okb == 1) Aabc = Pabc = (a + b)*-1;
	else if(oka == 0 && okb == 1) Aabc = Pabc = (a + (b*-1));
	else if(oka == 1 && okb == 0) Aabc = Pabc = (b + (a*-1));
	
	if(okc == 0 && okd == 0) Aabc *= (d - c), Pabc += (d - c);
	else if(okc == 1 && okd == 1) Aabc *= (c + d)*-1, Pabc += (c + d)*-1;
	else if(okc == 0 && okd == 1) Aabc *= (c + (d*-1)), Pabc += (c + (d*-1));
	else if(okc == 1 && okd == 0) Aabc *= (d + (c*-1)), Pabc += (d + (c*-1));
}}
//Aac, Abc
	else if(okac != 1 && okbc != 1)
	{
	if(a2 > a3) a = a2, oka = ok1a; else a = a3, oka = ok3a; 
	if(b2 < b3) b = b2, okb = ok1b; else b = b3, okb = ok3b; 
	if(c2 > c3) c = c2, okc = ok1c; else c = c3, okc = ok3c; 
	if(d2 < d3) d = d2, okd = ok1d; else d = d3, okd = ok3d;
if((a2>b3 && a3<b2) || (c2>d3 && c3<d2)) Aabc = 0, Pabc = 0;
	else{
	if(oka == 0 && okb == 0) Aabc = Pabc = (b - a);
	else if(oka == 1 && okb == 1) Aabc = Pabc = (a + b)*-1;
	else if(oka == 0 && okb == 1) Aabc = Pabc = (a + (b*-1));
	else if(oka == 1 && okb == 0) Aabc = Pabc = (b + (a*-1));
	
	if(okc == 0 && okd == 0) Aabc *= (d - c), Pabc += (d - c);
	else if(okc == 1 && okd == 1) Aabc *= (c + d)*-1, Pabc += (c + d)*-1;
	else if(okc == 0 && okd == 1) Aabc *= (c + (d*-1)), Pabc += (c + (d*-1));
	else if(okc == 1 && okd == 0) Aabc *= (d + (c*-1)), Pabc += (d + (c*-1));
}}

	
	A += Aabc;
	P += 2*Pabc;
	
	fprintf(g, "%lld %lld\n", A, P);
	
	fclose(f);
	fclose(g);
	return 0;
}