Cod sursa(job #167536)

Utilizator katakunaCazacu Alexandru katakuna Data 29 martie 2008 18:09:46
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.3 kb
#include<stdio.h>
#define inf 1000

struct drept {long long a,b,c,d;}aux2,d[10];

long long P,S,a,b,j,c,dd,x[20],y[20],ok,i,aux;

int main(){



FILE *f=fopen("reuniune.in","r");

fscanf(f,"%lld %lld %lld %lld",&d[1].b,&d[1].a,&d[1].d,&d[1].c);
fscanf(f,"%lld %lld %lld %lld",&d[2].b,&d[2].a,&d[2].d,&d[2].c);
fscanf(f,"%lld %lld %lld %lld",&d[3].b,&d[3].a,&d[3].d,&d[3].c);

x[1]=d[1].b;
x[2]=d[1].d;
x[3]=d[2].b;
x[4]=d[2].d;
x[5]=d[3].b;
x[6]=d[3].d;

y[1]=d[1].a;
y[2]=d[1].c;
y[3]=d[2].a;
y[4]=d[2].c;
y[5]=d[3].a;
y[6]=d[3].c;

fclose(f);

ok=1;

while(ok){
ok=0;

  for(i=1;i<6;i++){

    if(x[i]>x[i+1]){
    aux=x[i];
    x[i]=x[i+1];
    x[i+1]=aux;
    ok=1;
    }

  }

}

ok=1;
while(ok){
ok=0;

  for(i=1;i<3;i++){

    if(d[i].a>d[i+1].a){
    aux2=d[i];
    d[i]=d[i+1];
    d[i+1]=aux2;
    ok=1;
    }

  }

}



a=x[1];

  for(i=2;i<=6;i++){
  b=x[i];
  c=dd=-inf;
  ok=0;

    for(j=1;j<=3;j++){

      if(d[j].b<=a&&d[j].d>=b){

	if(c==-inf){
	c=d[j].a;
	dd=d[j].c;
	}

	else{


	  if(d[j].a<=dd){

	    if(d[j].c>dd){
	    dd=d[j].c;
	    ok=0;
	    }

	  }


	  if(d[j].a>dd){
	  S+=(b-a)*(dd-c);
	  P+=2*(b-a);
	  c=d[j].a;
	  dd=d[j].c;
	  ok=1;
	  }


	}


      }


    }


     //if(!ok){

     S+=(b-a)*(dd-c);
     P+=2*(b-a);
     c=d[j].a;
     dd=d[j].c;

     //}


  a=b;
  }

ok=1;
while(ok){
ok=0;

  for(i=1;i<6;i++){

    if(y[i]>y[i+1]){
    aux=y[i];
    y[i]=y[i+1];
    y[i+1]=aux;
    ok=1;
    }

  }

}

ok=1;
while(ok){
ok=0;

  for(i=1;i<3;i++){

    if(d[i].b>d[i+1].b){
    aux2=d[i];
    d[i]=d[i+1];
    d[i+1]=aux2;
    ok=1;
    }

  }

}

a=y[1];

  for(i=2;i<=6;i++){
  b=y[i];

  c=dd=-inf;
  ok=0;

    for(j=1;j<=3;j++){

      if(d[j].a<=a&&d[j].c>=b){

	if(c==-inf){
	c=d[j].b;
	dd=d[j].d;
	}

	else{


	  if(d[j].b<=dd){

	    if(d[j].d>dd){
	    dd=d[j].d;
	    ok=0;
	    }

	  }


	  if(d[j].b>dd){
	  P+=2*(b-a);
	  c=d[j].a;
	  dd=d[j].c;
	  ok=1;
	  }


	}


      }


    }


     if(!ok){

     P+=2*(b-a);
     c=d[j].a;
     dd=d[j].c;

     }




  a=b;
  }



FILE *g=fopen("reuniune.out","w");
fprintf(g,"%lld %lld",S,P);
fclose(g);

return 0;
}