Cod sursa(job #2193525)

Utilizator HD650Stoicescu Adrian Nicolae HD650 Data 10 aprilie 2018 14:19:01
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

struct dreptunghi
{
    int x1,x2,y1,y2;
};
ifstream f("reuniune.in");
ofstream g("reuniune.out");
dreptunghi d1,d2,d3;
long long aria(const dreptunghi &d)
{
    return 1LL*(d.x2-d.x1)*(d.y2-d.y1);
}
long long per(const dreptunghi &d)
{
    return 2LL*(d.x2-d.x1+d.y2-d.y1);
}
dreptunghi inte(const dreptunghi &d1,const dreptunghi &d2)
{
    dreptunghi d;
    d.x1=max(d1.x1,d2.x1);
    d.y1=max(d1.y1,d2.y1);
    d.x2=min(d1.x2,d2.x2);
    d.y2=min(d1.y2,d2.y2);
    if(d.x1>d.x2||d.y1>d.y2)
        d.x1=d.y1=d.x2=d.y2=0;
    return d;
}
int main()
{
    long long A,P;
    f>>d1.x1>>d1.y1>>d1.x2>>d1.y2;
    f>>d2.x1>>d2.y1>>d2.x2>>d2.y2;
    f>>d3.x1>>d3.y1>>d3.x2>>d3.y2;
    A=aria(d1)+aria(d2)+aria(d3)-aria(inte(d1,d2))-aria(inte(d1,d3))-aria(inte(d2,d3))+aria(inte(inte(d1,d2),d3));
    P=per(d1)+per(d2)+per(d3)-per(inte(d1,d2))-per(inte(d1,d3))-per(inte(d2,d3))+per(inte(inte(d1,d2),d3));
    g<<A<<' '<<P;
    return 0;
}