Cod sursa(job #3322288)

Utilizator BidonTurtitBezdedan Eric BidonTurtit Data 13 noiembrie 2025 12:49:02
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>

using namespace std;

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

struct punct{

    long long int x,y;
};

struct dreptunghi{
    punct p0,p1;
}d[4];

dreptunghi intersect(dreptunghi a, dreptunghi b)
{
    dreptunghi c;
    c.p0.x=max(a.p0.x,b.p0.x);
    c.p0.y=max(a.p0.y,b.p0.y);
    c.p1.x=min(a.p1.x,b.p1.x);
    c.p1.y=min(a.p1.y,b.p1.y);
    return c;
}

long long int arie(dreptunghi a){
    return abs(a.p0.x-a.p1.x)*abs(a.p0.y-a.p1.y);
};
long long int perimetru(dreptunghi a){
    return abs(a.p0.x-a.p1.x)*2+abs(a.p0.y-a.p1.y)*2;
};
int main()
{
    for(int i=1;i<=3;i++)
    {
        fin>>d[i].p0.x>>d[i].p0.y>>d[i].p1.x>>d[i].p1.y;
    }
    long long A,P;
    A=arie(d[1])+arie(d[2])+arie(d[3])-arie(intersect(d[1],d[2]))-arie(intersect(d[2],d[3]))-arie(intersect(d[3],d[1]))+arie(intersect(d[1],intersect(d[2],d[3])));
    P=perimetru(d[1])+perimetru(d[2])+perimetru(d[3])-perimetru(intersect(d[1],d[2]))-perimetru(intersect(d[2],d[3]))-perimetru(intersect(d[3],d[1]))+perimetru(intersect(d[1],intersect(d[2],d[3])));
    fout<<A<<" "<<P;
    return 0;
}