Cod sursa(job #1250970)

Utilizator mantisVraciu Stefan mantis Data 28 octombrie 2014 20:14:56
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
typedef long long LL;
struct drept{LL a,b,c,d;} v[4];
LL ar,per;
LL arie(drept D)
{
    return (D.c-D.a) * (D.d-D.b);
}
LL perim(drept D)
{
    return 2*(D.c-D.a)+2*(D.d-D.b);
}
drept inter(drept X,drept Y) //intersectie dreptunghiuri
{
    drept Z;
    Z.a=max(X.a,Y.a);
    Z.b=max(X.b,Y.b);
    Z.c=min(X.c,Y.c);
    Z.d=min(X.d,Y.d);
    if (Z.a>Z.c||Z.b>Z.d) Z.a=0,Z.b=0,Z.c=0,Z.d=0;
    return Z;
}
int main()
{
    for(int i=1;i<=3;i++)
        f>>v[i].a>>v[i].b>>v[i].c>>v[i].d;
    //pinex
    ar=arie(v[1])+arie(v[2])+arie(v[3])- arie(inter(v[1],v[2]))-arie(inter(v[1],v[3]))-arie(inter(v[2],v[3]))+ arie(inter(inter(v[1],v[2]),v[3]));
    per=perim(v[1])+perim(v[2])+perim(v[3])- perim(inter(v[1],v[2]))-perim(inter(v[2],v[3]))-perim(inter(v[1],v[3]))+ perim(inter(inter(v[1],v[2]),v[3]));
    g<<ar<<' '<<per;
	g.close();
	return 0;
}