Cod sursa(job #1825447)

Utilizator adiaioanaAdia R. adiaioana Data 9 decembrie 2016 10:23:31
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct drept{
int x1,y1,x2,y2;
};
unsigned long long s,p;
drept a,b,c;
unsigned long long ar(drept d)
{
	return abs(d.x2-d.x1)*abs(d.y2-d.y1);
}
unsigned long long pe(drept d)
{
	return 2*(abs(d.x2-d.x1)+abs(d.y2-d.y1));
}
drept in(drept a,drept b)
{
	drept d;
	d.x1=max(a.x1,b.x1);
	d.y1=max(a.y1,b.y1);
	d.x2=min(a.x2,b.x2);
	d.y2=min(a.y2,b.y2);
	if(d.x1>d.x2)
		d.x1=d.x2;
	if(d.y1>d.y2)
		d.y1=d.y2;
	return d;
}
int main()
{
    fin>>a.x1>>a.y1>>a.x2>>a.y2;
    fin>>b.x1>>b.y1>>b.x2>>b.y2;
    fin>>c.x1>>c.y1>>c.x2>>c.y2;
    s=ar(a);
    s+=ar(b);
    s+=ar(c);
    s-=ar(in(a,b));
    s-=ar(in(b,c));
    s-=ar(in(a,c));
    s+=(ar(in(in(a,c),b)));
    fout<<s<<' ';
    p=pe(a)+pe(b)+pe(c);
    p-=(pe(in(a,b))+pe(in(b,c))+pe(in(a,c)));
    p+=(pe(in(in(a,c),b)));
    fout<<p+1;
	return 0;
}