Cod sursa(job #2414478)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 24 aprilie 2019 16:44:58
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

struct idk
{
    int x1,x2,y1,y2;
};
idk a[5];

long long arie(idk x)
{
    return 1LL*(x.x2-x.x1)*(x.y2-x.y1);
}

long long perimetru(idk x)
{
    return 1LL*2*(x.y2-x.y1+x.x2-x.x1);
}

idk U(idk x,idk y)
{
    idk rasp;
    rasp.x1=max(x.x1,y.x1);
    rasp.y1=max(x.y1,y.y1);
    rasp.x2=min(x.x2,y.x2);
    rasp.y2=min(x.y2,y.y2);
    if(rasp.x1<=rasp.x2 and rasp.y1<=rasp.y2) return rasp;
    idk zero;
    zero.x1=zero.y1=zero.x2=zero.y2=0;
    return zero;
}

int main()
{
    for(int i=1;i<=3;i++)
        fin >> a[i].x1 >> a[i].y1 >> a[i].x2 >> a[i].y2;
    long long A = arie(a[1])+arie(a[2])+arie(a[3])-arie(U(a[1],a[2]))-arie(U(a[1],a[3]))-arie(U(a[2],a[3]))+arie(U(a[3],U(a[1],a[2])));
    long long P = perimetru(a[1])+perimetru(a[2])+perimetru(a[3])-perimetru(U(a[1],a[2]))-perimetru(U(a[1],a[3]))-perimetru(U(a[2],a[3]))+perimetru(U(a[3],U(a[1],a[2])));
    fout << A << ' ' << P;
    return 0;
}