Cod sursa(job #2276206)

Utilizator danielsociuSociu Daniel danielsociu Data 4 noiembrie 2018 13:05:56
Problema Reuniune Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
std::ifstream cin("reuniune.in");
std::ofstream cout("reuniune.out");
#define ll long long
#define maxi(a,b) a>b?a:b
#define mini(a,b) a<b?a:b
struct pot{ll x1,y1,x2,y2;} d[4];

ll arie(pot a){
    return ((a.x2-a.x1)*(a.y2-a.y1));
}
ll per(pot a){
    return 2*((a.x2-a.x1)+(a.y2-a.y1));
}

pot inters(pot a,pot b){
    pot c;
    c.x1=maxi(a.x1,b.x1);
    c.y1=maxi(a.y1,b.y1);
    c.x2=mini(a.x2,b.x2);
    c.y2=mini(a.y2,b.y2);
    if(c.x1<=c.x2&&c.y1<=c.y2) return c;
    else{
        c.x1=c.x2=c.y1=c.y2=0;
        return c;
    }
}

int main()
{
    for(int i=1;i<=3;i++)
        cin>>d[i].x1>>d[i].y1>>d[i].x2>>d[i].y2;
    cout<<arie(d[1])+arie(d[2])+arie(d[3])-arie(inters(d[1],d[2]))-arie(inters(d[1],d[3]))-arie(inters(d[2],d[3]))+arie(inters(d[1],inters(d[2],d[3])))<<'\n';
    cout<<per(d[1])+per(d[2])+per(d[3])-per(inters(d[1],d[2]))-per(inters(d[1],d[3]))-per(inters(d[2],d[3]))+per(inters(d[1],inters(d[2],d[3])))<<'\n';
    return 0;
}