Cod sursa(job #146247)

Utilizator katakunaCazacu Alexandru katakuna Data 1 martie 2008 14:38:24
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.17 kb
#include<stdio.h>   
  
struct patrate {float a,b;};   
patrate v[1006],aux;   
  
float mijx,solx,soly,mijy,x,y;   
  
int ok,n,i,j,nr;   
  
  
  
int caut (float a,float b){   
  
int p,u,mij;   
  
p=1;   
u=n;   
  
  while(p<=u){   
  
   mij=(p+u)/2;   
  
  
      if( a<=v[mij].a|| ( (v[mij].a-a>=0&&v[mij].a-a<=0.00001)  ||  (a-v[mij].a<=0&&a-v[mij].a>=-0.00001 ) ))
      u=mij-1;

      else p=mij+1;


  }


  if( ( v[p].a-a>=0&&v[p].a-a<=0.00001 ) || ( a-v[p].a<=0&&a-v[p].a>=-0.00001  )  ){
  i=p;

    while( ( v[i].a-a>=0&&v[i].a-a<=0.00001 ) || ( a-v[i].a<=0&&a-v[i].a>=-0.00001  )     ){

       if(( v[i].b-b>=0&&v[i].b-b<=0.00001 ) || ( b-v[i].b<=0&&b-v[i].b>=-0.00001  )  ){
       break;
       }

    i++;
    }



    if(( v[i].b-b>=0&&v[i].b-b<=0.00001 ) || ( b-v[i].b<=0&&b-v[i].b>=-0.00001  )  )
    return 1;

  }







return 0;
}











int main(){

FILE *f=fopen("patrate3.in","r");
fscanf(f,"%d",&n);

  for(i=1;i<=n;i++){
  fscanf(f,"%f",&v[i].a);


  fscanf(f,"%f",&mijy);
  v[i].b=mijy;
  }

fclose(f);


ok=1;

 while(ok){
 ok=0;

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

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

   /* else{

      if(v[i].a==v[i+1].a){

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


      }



    }*/



   }

 n--;
 }



  for(i=n;i>1;i--){
    for(j=i-1;j>=1;j--){

      //if(v[i].a<v[j].b){


    if(v[i].b<v[j].b||( v[i].b-v[j].b>=0&&v[i].b-v[j].b<=0.00001 ) || ( v[j].b-v[i].b<=0&&v[j].b-v[i].b>=-0.00001  )){

     mijx=-((v[i].a-v[j].a)/2)+v[i].a;
     mijy=((v[j].b-v[i].b)/2)+v[i].b;
     x=-mijx+v[i].a;
     y=mijy-v[i].b;

     solx=mijx+y;
     soly=mijy+x;

     if(caut(solx,soly)){

     solx=mijx-y;
     soly=mijy-x;

      if(caut(solx,soly))nr++;

     }



    }


    else{

    }

     // }

     /* else{

    if(v[i].b<v[j].b){

    }

    else{

    }


      }*/


    }

  }


FILE *g=fopen("patrate3.out","w");
fprintf(g,"%d",nr);
fclose(g);




return 0;
}