Cod sursa(job #279233)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 12 martie 2009 18:52:14
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <stdio.h>
#define maxx(a,b) ((a>b)?a:b)
#define minn(a,b) ((a<b)?a:b)
#define absl(a) (((a)<0)?-(a):(a))
int x1[5],x2[5],y1[5],y2[5],i,sol;

long long inter(int i,int j){
  int xx1,yy1,xx2,yy2;
  xx1= maxx( x1[i],x1[j] );
  xx2= minn( x2[i],x2[j] );
  yy1= maxx( y1[i],y1[j] );
  yy2 =minn( y2[i],y2[j] );
  if (i==2&&j==3){x1[4]=xx1;x2[4]=xx2;y1[4]=yy1;y2[4]=yy2;}
return absl(xx1-xx2)*absl(yy1-yy2);
}
long long per(int i,int j){
  int xx1,yy1,xx2,yy2;
  xx1= maxx( x1[i],x1[j] );
  xx2= minn( x2[i],x2[j] );
  yy1= maxx( y1[i],y1[j] );
  yy2 =minn( y2[i],y2[j] );
  if (i==2&&j==3){x1[4]=xx1;x2[4]=xx2;y1[4]=yy1;y2[4]=yy2;}
return absl(xx1-xx2)*2+absl(yy1-yy2)*2;
}
int main(){
  freopen("reuniune.in","r",stdin); freopen("reuniune.out","w",stdout);
  scanf("%d %d %d %d",&x1[1],&y1[1],&x2[1],&y2[1]);
  scanf("%d %d %d %d",&x1[2],&y1[2],&x2[2],&y2[2]);
  scanf("%d %d %d %d",&x1[3],&y1[3],&x2[3],&y2[3]);
  for (i=1;i<=3;++i)sol+=absl(x1[i]-x2[i])*absl(y1[i]-y2[i]);
  sol-=inter(1,3);
  sol-=inter(1,2);
  sol-=inter(2,3);
  sol+=inter(1,4);
  printf("%d\n",sol);
  sol=2*absl(x1[1]-x2[1])+2*absl(y1[1]-y2[1])+2*absl(x1[2]-x2[2])+2*absl(y1[2]-y2[2])+2*absl(x1[3]-x2[3])+2*absl(y1[3]-y2[3]);
  sol-=per(1,3);
  sol-=per(1,2);
  sol-=per(2,3);
  sol+=per(1,4);
  printf("%d\n",sol);
return 0;
}