Cod sursa(job #476950)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 12 august 2010 20:22:59
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>

struct drept
{
	long long x1, y1, x2, y2;
} d1, d2, d3;

long long min (long long a, long long b) {return a < b ? a : b;}
long long max (long long a, long long b) {return a > b ? a : b;}

drept inter (drept d1, drept d2)
{
	drept d;
	
	d.x1 = max (d1.x1, d2.x1);
	d.y1 = max (d1.y1, d2.y1);
	d.x2 = min (d1.x2, d2.x2);
	d.y2 = min (d1.y2, d2.y2);
	
	return d;
}

long long arie (drept d) {return (d.y2 - d.y1) * (d.x2 - d.x1);}
long long per (drept d) {return 2 * (d.y2 - d.y1 + d.x2 - d.x1);}

int main ()
{
	freopen ("reuniune.in", "r", stdin);
	freopen ("reuniune.out", "w", stdout);
	
	scanf ("%lld %lld %lld %lld", &d1.x1, &d1.y1, &d1.x2, &d1.y2);
	scanf ("%lld %lld %lld %lld", &d2.x1, &d2.y1, &d2.x2, &d2.y2);
	scanf ("%lld %lld %lld %lld", &d3.x1, &d3.y1, &d3.x2, &d3.y2);
	
	printf ("%lld ", arie (d1) + arie (d2) + arie (d3) - arie (inter (d1, d2)) - arie (inter (d2, d3)) - arie (inter (d3, d1)) + arie (inter (inter (d1, d2), d3)));
	printf ("%lld\n", per (d1) + per (d2) + per (d3) - per (inter (d1, d2)) - per (inter (d2, d3)) - per (inter (d3, d1)) + per (inter (inter (d1, d2), d3)));
	
	return 0;
}