Cod sursa(job #586453)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 1 mai 2011 17:09:46
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<iostream>
#include<fstream>
using namespace std;

struct drept {
	long long x1,y0,x0,y1;
};

drept a[3];
long long ar,per;

inline long long arie(drept a) {
	return (a.x1-a.x0)*(a.y1-a.y0);
}
inline long long peri(drept a) {
	return 2*(a.x1-a.x0+a.y1-a.y0);
}
inline drept inte(drept a,drept b) {
	drept c;
	c.x0=max(a.x0,b.x0);
	c.x1=min(a.x1,b.x1);
	c.y0=max(a.y0,b.y0);
	c.y1=min(a.y1,b.y1);
	if(c.x0>c.x1 || c.y0>c.y1) {
		c.x1=0; c.x0=0; c.y1=0; c.y0=0;
	}
	return c;
}

ifstream aa("reuniune.in");
ofstream ss("reuniune.out");
int main() {
	int i;
	for(i=0;i<=2;++i)
		aa >> a[i].x0 >> a[i].y0 >> a[i].x1 >> a[i].y1;
	ar=arie(a[0])+arie(a[1])+arie(a[2]);
	ar=ar-arie(inte(a[0],a[1]))-arie(inte(a[1],a[2]))-arie(inte(a[0],a[2]));
	ar+=arie(inte(inte(a[0],a[1]),a[2]));
	per=peri(a[0])+peri(a[1])+peri(a[2]);
	per=per-peri(inte(a[0],a[1]))-peri(inte(a[1],a[2]))-peri(inte(a[0],a[2]));
	per+=peri(inte(inte(a[0],a[1]),a[2]));
	ss << ar << " " << per;
	return 0;
}