Cod sursa(job #2414097)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 24 aprilie 2019 08:59:29
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <cstdio>
#include <algorithm>

using namespace std;

struct punct{
long long x,y;
punct(){}
punct(long long a,long long b){x = a;y = b;}
};

struct dreptunghi{
punct a1,a2;
dreptunghi(){}
dreptunghi(long long x,long long y,long long z,long long t){punct temp1(x,y);punct temp2(z,t);a1 = temp1;a2 = temp2;}
long long area(){return (a2.x-a1.x)*(a2.y-a1.y);}
long long perimeter(){return 2LL*((a2.x-a1.x)+(a2.y-a1.y));}
};
dreptunghi inter(dreptunghi B,dreptunghi C)
{
    long long x1 = max(B.a1.x,C.a1.x);
    long long x2 = min(B.a2.x,C.a2.x);
    long long y1 = max(B.a1.y,C.a1.y);
    long long y2 = min(B.a2.y,C.a2.y);
    dreptunghi temp(x1,y1,x2,y2);
    return temp;}

dreptunghi v[4];

int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    long long x1,x2,y1,y2;
    for(int i = 1 ; i <= 3 ; i++)
    {
        scanf("%lld%lld%lld%lld",&x1,&y1,&x2,&y2);
        dreptunghi temp(x1,y1,x2,y2);
        v[i] = temp;
    }
    dreptunghi A = v[1];
    dreptunghi B = v[2];
    dreptunghi C = v[3];
    printf("%lld ",A.area()+B.area()+C.area()-inter(A,B).area()-inter(B,C).area()-inter(A,C).area()+inter(inter(A,B),C).area());
    printf("%lld",A.perimeter()+B.perimeter()+C.perimeter()-inter(A,B).perimeter()-inter(B,C).perimeter()-inter(A,C).perimeter()+inter(inter(A,B),C).perimeter());
    return 0;
}