Cod sursa(job #26480)

Utilizator AdixSuciu Adrian Adix Data 5 martie 2007 17:35:55
Problema Ograzi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>
long n,m,w,h;
long nroi;
struct {long x,y;       
			 }ogr[5102],aux;
       

void procesare(long x,long y){
     long i;
     for(i=0;i<n;i++){                    
		 if(x>=ogr[i].x&&x<=ogr[i].x+w&&y>=ogr[i].y&&y<=ogr[i].y+h) {nroi++;break;}
     }
}

void qsort(int l,int r)
  {int i,j,mij;
   i=l;j=r;
   mij=ogr[(i+j)/2].x;
   do{ while(ogr[i].x<mij) i++;
       while(ogr[j].y>mij) j--;
       if(i<=j) {if(i<j) {aux=ogr[i];
			  ogr[i]=ogr[j];
			  ogr[j]=aux; }
		 i++; j--;}
      }while(i<=j);
    if(l>j) qsort(l,j);
    if(i<r) qsort(i,r);
}


void citire(){
     FILE *in;
     long i,j,x,y;
     
     in=fopen("ograzi.in","r");
      fscanf(in,"%ld %ld %ld %ld",&n,&m,&w,&h);
      for(i=0;i<n;i++){
                       fscanf(in,"%ld %ld",&ogr[i].x,&ogr[i].y);                       
                       }
                       
//      qsort(0,n);
      for(i=0;i<m;i++){
                       fscanf(in,"%ld %ld",&x,&y);
//                       cautare(x,y);
                         procesare(x,y);
                       }
     
     }

void scriere(){
     FILE *out;
     out=fopen("ograzi.out","w");
     fprintf(out,"%ld",nroi);     
     }
     
int main(){
     citire();
     scriere();
return 0;
     }