Cod sursa(job #1226328)

Utilizator ialexia_ioanaAlexia Ichim ialexia_ioana Data 5 septembrie 2014 10:46:08
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <stdio.h>

int max(int a, int b)
{
    if (a>b)
        return a;
    else
        return b;
}

int min(int a, int b)
{
    if (a>b)
        return b;
    else
        return a;
}

struct DREPTUNGHI
{
    int x0, y0, x1, y1;
}d1, d2, d3;

DREPTUNGHI comun(DREPTUNGHI d1, DREPTUNGHI d2)
{
    DREPTUNGHI a;
    a.x0=max(d1.x0,d2.x0);
    a.y0=max(d2.y0,d1.y0);
    a.x1=min(d1.x1,d2.x1);
    a.y1=min(d2.y1,d1.y1);
    if (a.y0>a.y1 || a.x0>a.x1)
        //inseamna ca nu avem parti comune
        a.x0=a.x1=a.y0=a.y1=0;
    return a;
}

long long perimetru(DREPTUNGHI d1)
{
    long long per;
    per=((d1.x1-d1.x0)+(d1.y1-d1.y0))*2;
    return per;
}

long long arie(DREPTUNGHI d1)
{
    long long ar;
    ar=(d1.y1-d1.y0)*(d1.x1-d1.x0);
    return ar;
}

int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);
    scanf("%d%d%d%d%d%d%d%d%d%d%d%d",&d1.x0,&d1.y0,&d1.x1,&d1.y1,&d2.x0,&d2.y0,&d2.x1,&d2.y1,&d3.x0,&d3.y0,&d3.x1,&d3.y1);
    DREPTUNGHI intd1d2, intd2d3, intd3d1, intd1d2d3;
    long long a, p;
    intd1d2=comun(d1, d2);
    intd2d3=comun(d2, d3);
    intd3d1=comun(d1, d3);
    intd1d2d3=comun(d1, intd2d3);
    a=arie(d1)+arie(d2)+arie(d3)-arie(intd1d2)-arie(intd3d1)-arie(intd2d3)+arie(intd1d2d3);
    p=perimetru(d1)+perimetru(d2)+perimetru(d3)-perimetru(intd1d2)-perimetru(intd2d3)-perimetru(intd3d1)+perimetru(intd1d2d3);
    printf("%lld %lld\n", a, p);
    return 0;
}