Cod sursa(job #1045679)

Utilizator SagunistuStrimbu Alexandru Sagunistu Data 1 decembrie 2013 21:20:11
Problema Reuniune Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <iostream>
#include <fstream>

using namespace std;

struct coord
{
    long long x0,y0,x1,y1;
};

int main()
{
    ifstream fin("reuniune.in");
    ofstream fout("reuniune.out");
    coord a,b,c,i1,i2,i3,cfin;
    long long ai1,ai2,ai3,afin,p1,p2,p3,pfin,a1,a2,a3,pi1,pi2,pi3;
    fin>>a.x0>>a.y0>>a.x1>>a.y1;
    fin>>b.x0>>b.y0>>b.x1>>b.y1;
    fin>>c.x0>>c.y0>>c.x1>>c.y1;
    i1.x0=max(a.x0,b.x0);
    i1.x1=min(a.x1,b.x1);
    i1.y0=max(a.y0,b.y0);
    i1.y1=min(a.y1,b.y1);
    i2.x0=max(a.x0,c.x0);
    i2.x1=min(a.x1,c.x1);
    i2.y0=max(a.y0,c.y0);
    i2.y1=min(a.y1,c.y1);
    i3.x0=max(c.x0,b.x0);
    i3.x1=min(c.x1,b.x1);
    i3.y0=max(c.y0,b.y0);
    i3.y1=min(c.y1,b.y1);
    cfin.x0=max(max(a.x0,b.x0),c.x0);
    cfin.x1=min(min(a.x1,b.x1),c.x1);
    cfin.y0=max(max(a.y0,b.y0),c.y0);
    cfin.y1=min(min(a.y1,b.y1),c.y1);
    a1=(a.x1-a.x0)*(a.y1-a.y0);
    a2=(b.x1-b.x0)*(b.y1-b.y0);
    a3=(c.x1-c.x0)*(c.y1-c.y0);
    ai1=(i1.x1-i1.x0)*(i1.y1-i1.y0);
    ai2=(i2.x1-i2.x0)*(i2.y1-i2.y0);
    ai3=(i3.x1-i3.x0)*(i3.y1-i3.y0);
    afin=(cfin.x1-cfin.x0)*(cfin.y1-cfin.y0);
    if(a1>0&&a2>0&&a3>0&&ai1>0&&ai2>0&&ai3>0&&afin>0)
        fout<<a1+a2+a3-ai1-ai2-ai3+afin<<" ";
    else
    {
        fout<<"0 0";
        return 0;
    }
    p1=2*(a.x1-a.x0)+2*(a.y1-a.y0);
    p2=2*(b.x1-b.x0)+2*(b.y1-b.y0);
    p3=2*(c.x1-c.x0)+2*(c.y1-c.y0);
    pi1=2*(i1.x1-i1.x0)+2*(i1.y1-i1.y0);
    pi2=2*(i2.x1-i2.x0)+2*(i2.y1-i2.y0);
    pi3=2*(i3.x1-i3.x0)+2*(i3.y1-i3.y0);
    pfin=2*(cfin.x1-cfin.x0)+2*(cfin.y1-cfin.y0);
    fout<<p1+p2+p3-pi1-pi2-pi3+pfin;
    return 0;
}