Cod sursa(job #1367071)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 1 martie 2015 16:24:33
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <cstdio>
#define P (1LL)

using namespace std;

int t[10][10],i,j;
long long s1,s2,s3,s12,s13,s23,s123,x,y;

int minim(int x,int y)
{
     if(x>y) return y;
     return x;
}
int maxim(int x,int y)
{
     if(x<y) return y;
     return x;
}
long long arie(int a,int b)
{
      int x,y;
      x=minim(t[a][3],t[b][3])-maxim(t[a][1],t[b][1]);
      y=minim(t[a][4],t[b][4])-maxim(t[a][2],t[b][2]);

      if(x>=0 && y>=0) return P*x*y;
      else return 0LL;
}

long long perimetru(int a,int b)
{
      int x,y;
      x=minim(t[a][3],t[b][3])-maxim(t[a][1],t[b][1]);
      y=minim(t[a][4],t[b][4])-maxim(t[a][2],t[b][2]);

      if(x>=0 && y>=0) return 2*P*(x+y);
      else return 0LL;
}

int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);

    for(i=1;i<=3;++i)
    for(j=1;j<=4;++j)
    scanf("%d",&t[i][j]);

    ////ARIE///////////////////////////////

    s1=P*(t[1][3]-t[1][1])*(t[1][4]-t[1][2]);
    s2=P*(t[2][3]-t[2][1])*(t[2][4]-t[2][2]);
    s3=P*(t[3][3]-t[3][1])*(t[3][4]-t[3][2]);

    s12=arie(1,2);
    s13=arie(1,3);
    s23=arie(2,3);

    x= minim(minim(t[1][3],t[2][3]),t[3][3])- maxim(maxim(t[1][1],t[2][1]),t[3][1]);
    y= minim(minim(t[1][4],t[2][4]),t[3][4])- maxim(maxim(t[1][2],t[2][2]),t[3][2]);

    if(x>0 && y>0) s123=P*x*y;
    else s123=0LL;

    printf("%lld ",P*s1+P*s2+P*s3-P*s12-P*s13-P*s23+P*s123);

    ////PERIMETRU/////////////////////////////////

    s1=2*P*(t[1][4]+t[1][3]-t[1][2]-t[1][1]);
    s2=2*P*(t[2][4]+t[2][3]-t[2][2]-t[2][1]);
    s3=2*P*(t[3][4]+t[3][3]-t[3][2]-t[3][1]);

    s12=perimetru(1,2);
    s13=perimetru(1,3);
    s23=perimetru(2,3);

    x= minim(minim(t[1][3],t[2][3]),t[3][3])- maxim(maxim(t[1][1],t[2][1]),t[3][1]);
    y= minim(minim(t[1][4],t[2][4]),t[3][4])- maxim(maxim(t[1][2],t[2][2]),t[3][2]);

    if(x>0 && y>0) s123=2*P*x+2*P*y;
    else s123=0;

    printf("%lld\n",P*s1+P*s2+P*s3-P*s12-P*s23-P*s13+P*s123);

    return 0;
}