Cod sursa(job #2138073)

Utilizator patcasrarespatcas rares danut patcasrares Data 21 februarie 2018 12:33:19
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
long long l0[4],c0[4],l1[4],c1[4];
long long rx1,rx2=(1<<28),ry1,ry2=(1<<28);
long long rez1,rez2;
int main()
{
    for(int i=1;i<=3;i++)
        fin>>l0[i]>>c0[i]>>l1[i]>>c1[i];
    for(int i=1;i<=3;i++)
    {
        rez1+=2*(l1[i]-l0[i]+c1[i]-c0[i]);
        rez2+=(l1[i]-l0[i])*(c1[i]-c0[i]);
    }
    for(int i=1;i<3;i++)
        for(int j=i+1;j<=3;j++)
        {
            rx1=max(l0[i],l0[j]);
            rx2=min(l1[i],l1[j]);
            ry1=max(c0[i],c0[j]);
            ry2=min(c1[i],c1[j]);
            if(rx1<=rx2)
                if(ry1<=ry2)
                {
                    rez1-=2*(rx2-rx1+ry2-ry1);
                    rez2-=(rx2-rx1)*(ry2-ry1);
                }
        }
    rx1=max(l0[1],l0[2]);
    rx2=min(l1[1],l1[2]);
    ry1=max(c0[1],c0[2]);
    ry2=min(c1[1],c1[2]);
    rx1=max(rx1,l0[3]);
    rx2=min(rx2,l1[3]);
    ry1=max(ry1,c0[3]);
    ry2=min(ry2,c1[3]);
    if(rx1<=rx2)
        if(ry1<=ry2)
        {
            rez1+=2*(rx2-rx1+ry2-ry1);
            rez2+=(rx2-rx1)*(ry2-ry1);
        }
    fout<<rez2<<' '<<rez1;
}