Cod sursa(job #3245724)

Utilizator vladsoartavlad sofronea vladsoarta Data 30 septembrie 2024 11:02:47
Problema Reuniune Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>

using namespace std;

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 abs(patrat.x2-patrat.x1)+(patrat.y2-patrat.y1);
}

int 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;
}