Cod sursa(job #3334425)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 17 ianuarie 2026 14:54:37
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream  fin("reuniune.in");
ofstream fout("reuniune.out");

struct drept
{
    long long x1,y1,x2,y2,arie,perimetru;
} d1,d2,d3,d12,d13,d23,dtot;

void citire(drept &d)
{
    fin>>d.x1>>d.y1>>d.x2>>d.y2;
}

void procesare(drept &d)
{
    if(d.x1>d.x2 || d.y1>d.y2)
    {
        ///(cand dupa intersectiea 2 dr obtinem multimea vida)
        return;
    }

    d.arie=abs(d.x1-d.x2)*abs(d.y1-d.y2);
    d.perimetru=(abs(d.x1-d.x2)+abs(d.y1-d.y2))*2;
}

void intersectie(drept a, drept b, drept &c)
{
    c.x1=max(a.x1,b.x1);
    c.y1=max(a.y1,b.y1);
    c.x2=min(a.x2,b.x2);
    c.y2=min(a.y2,b.y2);
    procesare(c);
}

int main()
{
    citire(d1);
    citire(d2);
    citire(d3);

    procesare(d1);
    procesare(d2);
    procesare(d3);

    intersectie(d1,d2,d12);
    intersectie(d1,d3,d13);
    intersectie(d2,d3,d23);
    intersectie(d12,d13,dtot);

    fout<< d1.arie+d2.arie+d3.arie-d12.arie-d23.arie-d13.arie+dtot.arie << " ";
    fout<< d1.perimetru+d2.perimetru+d3.perimetru-d12.perimetru-d23.perimetru-d13.perimetru+dtot.perimetru << "\n";

    return 0;
}