Cod sursa(job #484409)

Utilizator Addy.Adrian Draghici Addy. Data 14 septembrie 2010 01:28:15
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <cstdio>

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

long long min (long long x, long long y) {
	return x < y ? x : y;
}

long long max (long long x, long long y) {
	return x > y ? x : y;
}

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

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

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

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