Cod sursa(job #317097)

Utilizator andreioneaAndrei Onea andreionea Data 22 mai 2009 16:06:45
Problema Poligon Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.93 kb
 #include<stdio.h>  
 int x[801],y[801],n;  
 inline int sign(long long x)  
 {return (x<0)?(-1):(x>0)?(1):(0);  
 } 
 int dotprod(int x0,int y0, int x1, int y1,int x2,int y2)  
 {x1-=x0;
  x2-=x0;
  y1-=y0;
  y2-=y0;
  return (x1*y2)-(x2*y1);
 }  
 int in_poli(int xx,int yy)  
 {int semn=sign(dotprod(xx,yy,x[1],y[1],x[2],y[2])),i,s;  
  for(i=3;i<=n;++i)  
   {s=sign(dotprod(xx,yy,x[i-1],y[i-1],x[i],y[i]));  
     if(s==0) return 1;  
     if(s!=semn) return 0;  
    }  
  s=sign(dotprod(xx,yy,x[n],y[n],x[1],y[1]));  
  if(s==0) return 1;  
  if(s!=semn) return 0;  
  return 1;  
 }  
 int main()  
{FILE *f=fopen("poligon.in","r"),*g=fopen("poligon.out","w");  
  int m,xx,yy,np=0,i;  
 fscanf(f,"%d %d\n",&n,&m);  
  for(i=1;i<=n;++i) fscanf(f,"%d %d\n",&x[i],&y[i]);  
  for(i=1;i<=m;++i)  
     {fscanf(f,"%d %d\n",&xx,&yy);  
          np+=in_poli(xx,yy);  
      }  
 fprintf(g,"%d \n",np);  
 fclose(f);  
 fclose(g);  
 return 0;  
 }