Cod sursa(job #2247201)

Utilizator ZanoxNonea Victor Zanox Data 27 septembrie 2018 23:31:36
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>

typedef long long ll;

ll area(ll*a)
{
    return (a[2] - a[0])*(a[3] - a[1]);
}

ll peri(ll*a)
{
    return 2*((a[2] - a[0]) + (a[3] - a[1]));
}

ll* sect(ll*a, ll*b)
{
    ll *sol = new ll[4];
    sol[0] = std::max(a[0],b[0]);
    sol[1] = std::max(a[1],b[1]);
    sol[2] = std::min(a[2],b[2]);
    sol[3] = std::min(a[3],b[3]);
    if(sol[0]>sol[2] || sol[1]>sol[3])
    {
        sol[2] = sol[0];
        sol[3] = sol[1];
    }
    return sol;
}

int main()
{
    ll *a,*b,*c;
    a = new ll[4];
    b = new ll[4];
    c = new ll[4];
    std::fstream fin("reuniune.in",std::ios::in),
            fout("reuniune.out",std::ios::out);
    fin>>a[0]>>a[1]>>a[2]>>a[3];
    fin>>b[0]>>b[1]>>b[2]>>b[3];
    fin>>c[0]>>c[1]>>c[2]>>c[3];
    ll sol1 = area(a) + area(b) + area(c) -
            (area(sect(a,b)) + area(sect(b,c)) + area(sect(c,a)) ) +
                area(sect(a,sect(b,c)));
    ll sol2 = peri(a) + peri(b) + peri(c) -
            (peri(sect(a,b)) + peri(sect(b,c)) + peri(sect(c,a))) +
                peri(sect(a,sect(b,c)));
    fout<<sol1<<' '<<sol2;
}