Cod sursa(job #2222059)

Utilizator mirelPmirel p mirelP Data 16 iulie 2018 13:33:58
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
using namespace std;

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

struct coord
{
    int x1, y1, x2, y2;
} dr1, dr2, dr3;

long long arie(coord dr)
{
    return (dr.x2 - dr.x1) * 1LL * (dr.y2 - dr.y1);
}
long long perimetru (coord dr)
{
    return 2LL * ((dr.x2 - dr.x1) + (dr.y2 - dr.y1));
}

coord intersectie(coord dr1, coord dr2)
{
    coord dr = {max(dr1.x1, dr2.x1), max(dr1.y1, dr2.y1), min(dr1.x2, dr2.x2), min( dr1.y2, dr2.y2)};
    if(dr.x1 > dr.x2 || dr.y1 > dr.y2)
        dr = {0, 0, 0, 0};
    return dr;
}

int main()
{
    f >> dr1.x1 >> dr1.y1 >> dr1.x2 >> dr1.y2;
    f >> dr2.x1 >> dr2.y1 >> dr2.x2 >> dr2.y2;
    f >> dr3.x1 >> dr3.y1 >> dr3.x2 >> dr3.y2;
    g << arie(dr1) + arie(dr2) + arie(dr3) - arie(intersectie(dr1, dr2)) - arie(intersectie(dr1, dr3)) - arie(intersectie(dr2, dr3)) + arie( intersectie(dr1, intersectie(dr2, dr3))) <<  " ";
    g << 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";
   return 0;
}