Cod sursa(job #1930292)

Utilizator flibiaVisanu Cristian flibia Data 18 martie 2017 18:10:13
Problema Reuniune Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>
#define mx INT_MAX
#define ll long long

using namespace std;

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

struct my{
	ll m1, m2, n1, n2;
};

my a[5]; ll v1 = mx, v2 = -mx, o1 = mx, o2 = -mx, m, n, rs, ans;

int main(){
	for(int i = 1; i <= 3; i++) in >> a[i].m1 >> a[i].n1 >> a[i].m2 >> a[i].n2;
	for(int i = 1; i <= 3; i++){
		v1 = min(v1, a[i].n1);
		v2 = max(v2, a[i].n2);
		o1 = min(o1, a[i].m1);
		o2 = max(o2, a[i].m2);
	}
	ans = 2*(v2+o2-v1-o1);
	for(int i = 1; i <= 3; i++) rs += (a[i].m2-a[i].m1) * (a[i].n2-a[i].n1);
	for(int i = 1; i < 3; i++)
		for(int j = i+1; j <= 3; j++){
			v1 = max(a[i].n1, a[j].n1);
			v2 = min(a[i].n2, a[j].n2);
			o1 = max(a[i].n1, a[j].n1);
			o2 = min(a[i].n2, a[j].n2);
			rs -= (v2-v1) * (o2-o1);
		}
	ll v1 = -mx, v2 = mx, o1 = -mx, o2 = mx;
	for(int i = 1; i <= 3; i++){
		v1 = max(v1, a[i].n1);
		v2 = min(v2, a[i].n2);
		o1 = max(o1, a[i].m1);
		o2 = min(o2, a[i].m2);
	}
	if(v2 > v1) m = v2-v1;
	if(o2 > o1) n = o2-o1;
	out << rs+m*n << ' ' << ans;
	return 0;
}