Cod sursa(job #3245807)

Utilizator vladsoartavlad sofronea vladsoarta Data 30 septembrie 2024 18:25:48
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#define int long long
using namespace std;
ifstream cin("reuniune.in");
ofstream cout("reuniune.out");

struct pat
{
    int x1,y1,x2,y2;
} p[4];

pat getintersect(pat (&patrat1),pat (&patrat2))
{
    int x1=max(patrat1.x1,patrat2.x1);
    int x2=min(patrat1.x2,patrat2.x2);
    int y1=max(patrat1.y1,patrat2.y1);
    int y2=min(patrat1.y2,patrat2.y2);

    if(x1<=x2&&y1<=y2)
        return {x1,y1,x2,y2};
    else
        return {0,0,0,0};
}
int getariepat(pat (&patrat))
{
    return abs(patrat.x2-patrat.x1)*(patrat.y2-patrat.y1);
}
int getperim(pat (&patrat))
{
    return 2*abs(patrat.x2-patrat.x1)+2*(patrat.y2-patrat.y1);
}

int32_t main()
{
    for(int i=1; i<=3; i++)
    {
        int x1,y1,x2,y2;
        cin>>x1>>y1>>x2>>y2;
        p[i] = {x1,y1,x2,y2};
    }

    pat c1=getintersect(p[1],p[2]);
    pat c2=getintersect(p[1],p[3]);
    pat c3=getintersect(p[2],p[3]);
    pat c4=getintersect(p[1],c3);

    cout<<getariepat(p[1])+getariepat(p[2])+getariepat(p[3])
    -getariepat(c1)-
    getariepat(c2)-
    getariepat(c3)+
    getariepat(c4)<<" ";

    cout<<getperim(p[1])+getperim(p[2])+getperim(p[3])-
    getperim(c1)-
    getperim(c2)-
    getperim(c3)+
    getperim(c4);
    return 0;
}