Cod sursa(job #2146156)

Utilizator Claudiu07Pana Claudiu Claudiu07 Data 27 februarie 2018 20:33:39
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");

long long A,P;
struct drpt
{
    int x0,x1,y0,y1;
} d[4];

inline long long arie(drpt d)
{
    return 1LL*(d.x1-d.x0)*(d.y1-d.y0);
}
inline long long per(drpt d)
{
    return 2LL*(d.x1-d.x0+d.y1-d.y0);
}
drpt intersectie(drpt d1, drpt d2)
{
    drpt d;
    d.x0=max(d1.x0, d2.x0);
    d.y0=max(d1.y0, d2.y0);
    d.x1=min(d1.x1, d2.x1);
    d.y1=min(d1.y1, d2.y1);
    if(d.x0>d.x1 || d.y0>d.y1)
    {
        d.x0=d1.x1=0;
        d.y0=d1.y1=0;
    }
    return d;
}
int main()
{
    drpt dd;
    for(int i=1; i<=3; i++)
    {
        f>>d[i].x0>>d[i].y0>>d[i].x1>>d[i].y1;

        A+=arie(d[i]);
        P+=per(d[i]);
    }
    for(int i=1; i<3; i++)
        for(int j=i+1; j<=3; j++)
        {
            dd=intersectie(d[i],d[j]);
            A-=arie(dd);
            P-=per(dd);
        }
    dd=intersectie(intersectie(d[1],d[2]),d[3]);
    A+=arie(dd);
    P+=per(dd);
    g<<A<<' '<<P<<'\n';
    return 0;
}