Cod sursa(job #626034)

Utilizator dtoniucDaniel Toniuc dtoniuc Data 26 octombrie 2011 09:46:46
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<iostream>
#include<fstream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef struct drept
{
	ll ax,ay,bx,by;
}drept;
inline ll a(drept x)
{
	return (x.bx-x.ax)*(x.by-x.ay);
}

inline ll p(drept x)
{
	return(2LL*(x.bx-x.ax)+2LL*(x.by-x.ay));
}	

inline drept i(drept x,drept y)
{
	drept IN;
	IN.ax=max(x.ax,y.ax);
	IN.ay=max(x.ay,y.ay);
	IN.bx=min(x.bx,y.bx);
	IN.by=min(x.by,y.by);
	
	if(IN.ax >IN.bx || IN.ay>IN.by)
		IN.ax=IN.ay=IN.bx=IN.by=0;
	return IN;
}
int main()
{
	ifstream fin("reuniune.in");
	ofstream fout("reuniune.out");
	ll x,y;
	drept A,B,C;
	fin>>A.ax>>A.ay>>A.bx>>A.by;
	fin>>B.ax>>B.ay>>B.bx>>B.by;
	fin>>C.ax>>C.ay>>C.bx>>C.by;
	
	x=a(A)+a(B)+a(C)-a(i(A,B))-a(i(A,C))-a(i(B,C))+a(i(A,i(B,C)));
	y=p(A)+p(B)+p(C)-p(i(A,B))-p(i(A,C))-p(i(B,C))+p(i(A,i(B,C)));
	fout<<x<<" "<<y;
	return 0;
}