Cod sursa(job #1065800)

Utilizator SagunistuStrimbu Alexandru Sagunistu Data 23 decembrie 2013 18:20:19
Problema Reuniune Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.67 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);
    if(i1.x1-i1.x0>0&&i1.y1-i1.y0>0)
        ai1=(i1.x1-i1.x0)*(i1.y1-i1.y0);
    else
        ai1=0;
    if(i2.x1-i2.x0>0&&i2.y1-i2.y0>0)
        ai2=(i2.x1-i2.x0)*(i2.y1-i2.y0);
    else
        ai2=0;
    if(i3.x1-i3.x0>0&&i3.y1-i3.y0>0)
        ai3=(i3.x1-i3.x0)*(i3.y1-i3.y0);
    else
        ai3=0;
    if(cfin.x1-cfin.x0>0&&cfin.y1-cfin.y0>0)
        afin=(cfin.x1-cfin.x0)*(cfin.y1-cfin.y0);
    else
        afin=0;
    if(ai1<0)
        ai1=0;
    if(ai2<0)
        ai2=0;
    if(ai3<0)
        ai3=0;
    if(afin<0)
        afin=0;
    fout<<a1+a2+a3-ai1-ai2-ai3+afin<<" ";
    if(a.x1-a.x0!=0&&a.y1-a.y0!=0)
        p1=2*(a.x1-a.x0)+2*(a.y1-a.y0);
    else
        p1=(a.x1-a.x0)+(a.y1-a.y0);
    if((b.x1-b.x0)!=0&&(b.y1-b.y0)!=0)
        p2=2*(b.x1-b.x0)+2*(b.y1-b.y0);
    else
        p2=(b.x1-b.x0)+(b.y1-b.y0);
    if((c.x1-c.x0)!=0&&(c.y1-c.y0)!=0)
        p3=2*(c.x1-c.x0)+2*(c.y1-c.y0);
    else
        p3=(c.x1-c.x0)+(c.y1-c.y0);
    if((i1.x1-i1.x0)!=0&&(i1.y1-i1.y0)!=0)
        pi1=2*(i1.x1-i1.x0)+2*(i1.y1-i1.y0);
    else
        pi1=(i1.x1-i1.x0)+(i1.y1-i1.y0);
    if((i2.x1-i2.x0)!=0&&(i2.y1-i2.y0)!=0)
        pi2=2*(i2.x1-i2.x0)+2*(i2.y1-i2.y0);
    else
        pi2=(i2.x1-i2.x0)+(i2.y1-i2.y0);
    if((i3.x1-i3.x0)!=0&&(i3.y1-i3.y0)!=0)
        pi3=2*(i3.x1-i3.x0)+2*(i3.y1-i3.y0);
    else
        pi3=(i3.x1-i3.x0)+(i3.y1-i3.y0);
    if((cfin.x1-cfin.x0)!=0&&(cfin.y1-cfin.y0)!=0)
        pfin=2*(cfin.x1-cfin.x0)+2*(cfin.y1-cfin.y0);
    else
        pfin=(cfin.x1-cfin.x0)+(cfin.y1-cfin.y0);
    if(pi1<0)
        pi1=0;
    if(pi2<0)
        pi2=0;
    if(pi3<0)
        pi3=0;
    if(pfin<0)
        pfin=0;
    fout<<p1+p2+p3-pi1-pi2-pi3+pfin;
}