Cod sursa(job #317051)

Utilizator andreioneaAndrei Onea andreionea Data 22 mai 2009 13:23:09
Problema Poligon Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
int x[801],y[801],n;
inline int sign(long long x)
{return (x<0)?(-1):(x>0)?(1):(0);
}
inline long long dotprod(int x0,int y0, int x1, int y1,int x2,int y2)
{return (long long)(x1-x0)*(y2-y0)-(long long)(x2-x0)*(y1-y0);
}
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",np);
 fclose(f);
 fclose(g);
 return 0;
}