Cod sursa(job #3322326)

Utilizator Andrada_MincaAndrada Minca Andrada_Minca Data 13 noiembrie 2025 15:18:39
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
//
//  main.cpp
//  reuniune
//
//  Created by Andrada Minca on 13.11.2025.
//

#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream cin("reuniune.in");
ofstream cout("reuniune.out");
struct dreptunghi
{
    long long x1,x2,y1,y2;
}v[5];
long long arie(dreptunghi x)
{
    return (x.x2-x.x1)*(x.y2-x.y1);
}
long long perimetru(dreptunghi x)
{
    return 2*(x.x2-x.x1+x.y2-x.y1);
}
dreptunghi reuniune(dreptunghi a,dreptunghi b)
{
    dreptunghi rez;
    rez.x1=max(a.x1,b.x1);
    rez.y1=max(a.y1,b.y1);
    rez.x2=min(a.x2,b.x2);
    rez.y2=min(a.y2,b.y2);
    if(rez.x1<=rez.x2&&rez.y1<=rez.y2)return rez;
    return {0,0,0,0};
}
int main()
{
    for(int i=1;i<=3;i++)
    {
        
        cin>>v[i].x1>>v[i].y1>>v[i].x2>>v[i].y2;
    }
    cout<<arie(v[1])+arie(v[2])+arie(v[3])-arie(reuniune(v[1],v[2]))-arie(reuniune(v[3],v[2]))-arie(reuniune(v[1],v[3]))+arie(reuniune(reuniune(v[1],v[2]),v[3]))<<" ";
    cout<<perimetru(v[1])+perimetru(v[2])+perimetru(v[3])-perimetru(reuniune(v[1],v[2]))-perimetru(reuniune(v[3],v[2]))-perimetru(reuniune(v[1],v[3]))+perimetru(reuniune(reuniune(v[1],v[2]),v[3]));
    return 0;
}