Cod sursa(job #1825435)

Utilizator adiaioanaAdia R. adiaioana Data 9 decembrie 2016 10:10:03
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
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 (d.x2-d.x1)*(d.y2-d.y1);
}
unsigned long long pe(drept d)
{
	return 2*((d.x2-d.x1)+(d.y2-d.y1));
}
drept in(drept a,drept b)
{
	if(!(a.y2<b.y1||a.y1>b.y2||a.x2<b.x1||b.x2<a.x1))
	{
	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);
	return d;
	}
	drept d;
	d.x1=0;
	d.y1=0;
	d.x2=0;
	d.y2=0;
	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;
	return 0;
}