Cod sursa(job #2311769)

Utilizator StefanSanStanescu Stefan StefanSan Data 3 ianuarie 2019 17:57:36
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

ifstream in("reuniune.in");
ofstream out("reuniune.out");


struct dreptunghi
{
    int x0, y0, x1, y1;
}dr1, dr2, dr3;
inline long long arie(dreptunghi D)
{
    return 1LL * (D.x1 - D.x0) * (D.y1 - D.y0);
}
inline long long perimetru(dreptunghi D)
{
    return 2LL * (D.x1 - D.x0 + D.y1 - D.y0);
}
dreptunghi intersectie(dreptunghi D1,dreptunghi D2)
{
    dreptunghi D;
    D.x0=max(D1.x0,D2.x0);
    D.x1=min(D1.x1,D2.x1);

    D.y0=max(D1.y0,D2.y0);
    D.y1=min(D1.y1,D2.y1);

    if ((D.x0>D.x1) || (D.y0>D.y1))
    {
        D.x0=D.x1=D.y0=D.y1=0;
    }
    return D;
}
int main()
{
    in >> dr1.x0 >> dr1.y0 >> dr1.x1 >> dr1.y1;
    in >> dr2.x0 >> dr2.y0 >> dr2.x1 >> dr2.y1;
    in >> dr3.x0 >> dr3.y0 >> dr3.x1 >> dr3.y1;
    out << arie(dr1) + arie(dr2) + arie(dr3) - arie(intersectie(dr1, dr2)) - arie(intersectie(dr1, dr3)) - arie(intersectie(dr2, dr3)) + arie( intersectie(dr1, intersectie(dr2, dr3))) <<  " ";
    out << perimetru(dr1) + perimetru(dr2) + perimetru(dr3) - perimetru(intersectie(dr1, dr2)) - perimetru(intersectie(dr1, dr3)) - perimetru(intersectie(dr2, dr3)) + perimetru(intersectie(dr1, intersectie(dr2, dr3))) << "\n";


}