Cod sursa(job #240376)

Utilizator undogSavu Victor Gabriel undog Data 7 ianuarie 2009 15:18:34
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.74 kb
#include <stdio.h>
struct point{
	int x,y;
};

struct rect{
	struct point a,b;
};

int inline in(point a,rect c){
   return a.x>=c.a.x&&a.x<=c.b.x&&a.y<=c.a.y&&a.y>=c.b.y;
}

int main(){
	freopen("reuniune.in","rt",stdin);
   freopen("reuniune.out","wt",stdout);
   struct rect r,a[3],e[2];
   scanf("%d%d%d%d",&r.a.x,&r.a.y,&r.b.x,&r.b.y);
   a[0]=r;
   scanf("%d%d%d%d",&r.a.x,&r.a.y,&r.b.x,&r.b.y);
   a[1]=r;
   scanf("%d%d%d%d",&r.a.x,&r.a.y,&r.b.x,&r.b.y);
   a[2]=r;

   if(in(a[0].a,a[1])){
   	e[0].a=a[0].a;
      e[0].b=a[1].b;
   }
   else if(in(a[0].b,a[1])){
   	e[0].a=a[1].a;
      e[0].b=a[0].b;
   }
   else{
   	struct point aux;
      aux.x=a[0].a.x;
      aux.y=a[0].b.y;

      if(in(aux,a[1])){
         e[0].a.x=aux.x;
         e[0].a.y=a[1].a.y;
         e[0].b.x=a[1].b.x;
         e[0].b.y=aux.y;
      }

      aux.x=a[0].b.x;
      aux.y=a[0].a.y;

      if(in(aux,a[1])){
      	e[0].a.x=a[1].b.x;
         e[0].a.y=aux.y;
         e[0].b.x=aux.x;
         e[0].b.y=a[1].a.y;
      }
   }

   if(in(a[1].a,a[2])){
   	e[1].a=a[1].a;
      e[1].b=a[2].b;
   }
   else if(in(a[1].b,a[2])){
   	e[1].a=a[2].a;
      e[1].b=a[1].b;
   }
   else{
   	struct point aux;
      aux.x=a[1].a.x;
      aux.y=a[1].b.y;

      if(in(aux,a[2])){
         e[1].a.x=aux.x;
         e[1].a.y=a[2].a.y;
         e[1].b.x=a[2].b.x;
         e[1].b.y=aux.y;
      }

      aux.x=a[1].b.x;
      aux.y=a[1].a.y;

      if(in(aux,a[2])){
      	e[1].a.x=a[2].b.x;
         e[1].a.y=aux.y;
         e[1].b.x=aux.x;
         e[1].b.y=a[2].a.y;
      }
   }

   long l1,l2;

   l1=e[2].b.x-e[2].a.x;
   l2=e[2].a.y-e[2].b.y;

   printf("%d %d",2*l1+2*l2,l1*l2);


   return 0;
}