Cod sursa(job #1934824)

Utilizator flibiaVisanu Cristian flibia Data 21 martie 2017 20:46:59
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <bits/stdc++.h>
#define ll long long
#define mx INT_MAX

using namespace std;

ifstream in("reuniune.in");
ofstream out("reuniune.out");

struct my{
	ll a1, a2, b1, b2;
};

my v[10]; ll x, y, xx, yy, hmax = -mx, hmin = mx, lmax = -mx, lmin = mx, area, peri;

int main(){
	for(int i = 1; i <= 3; i++) in >> v[i].a1 >> v[i].b1 >> v[i].a2 >> v[i].b2;
	for(int i = 1; i <= 3; i++){
		hmax = max(hmax, v[i].b2);
		hmin = min(hmin, v[i].b1);
		lmax = max(lmax, v[i].a2);
		lmin = min(lmin, v[i].a1);
	}
	peri = 2 * (hmax-hmin+lmax-lmin);
	for(int i = 1; i <= 3; i++) area += (v[i].a2 - v[i].a1) * (v[i].b2 - v[i].b1);
	for(int i = 1; i <= 2; i++)
		for(int j = i+1; j <= 3; j++){
			xx = yy = 0;
			hmax = min(v[i].b2, v[j].b2);
			hmin = max(v[i].b1, v[j].b1);
			lmax = min(v[i].a2, v[j].a2);
			lmin = max(v[i].a1, v[j].a1);
			if(lmax > lmin) xx = lmax - lmin;
			if(hmax > hmin)	yy = hmax - hmin;
			area -= xx*yy;
		}
	hmax = mx; hmin = -mx; lmax = mx; lmin = -mx;
	for(int i = 1; i <= 3; i++){
		hmax = min(hmax, v[i].b2);
		hmin = max(hmin, v[i].b1);
		lmax = min(lmax, v[i].a2);
		lmin = max(lmin, v[i].a1);
	}
	yy = xx = 0;
	if(hmax > hmin) yy = hmax - hmin;
	if(lmax > lmin) xx = lmax - lmin;
	area += xx*yy;
	out << area << ' ' << peri;
	return 0;
}