Pagini recente » Cod sursa (job #997274) | Cod sursa (job #2966155) | Cod sursa (job #365992) | Cod sursa (job #622916) | Cod sursa (job #49467)
Cod sursa(job #49467)
#include<stdio.h>
#define inf 60001
long int n,m,xp[801],yp[801];
int poli(long int x,long int y)
{int i,j,k,ok;
ok=0;
long a,b;
for(i=1,j=n;i<=n;j=i++)
{ if( ((yp[i]>=y && yp[j]<=y) || (yp[i]<=y && yp[j]>=y))&&((xp[i]>=x)||(xp[j]>=x)))
{a=(x-xp[i])*(yp[j]-yp[i])-(y-yp[i])*(xp[j]- xp[i]);
b=(inf-xp[i])*(yp[j]-yp[i])-(y-yp[i])*(xp[j]- xp[i]);
if((a<=0 && b>=0)||(a>=0 && b<=0)) ok=!ok;
}
}
return ok;
}
int main ()
{long int i,x,y,NR;
freopen("poligon.in","r",stdin);
scanf("%ld %ld\n",&n,&m);
for(i=1;i<=n;i++) scanf("%ld %ld\n",&xp[i],&yp[i]);
NR=0;
for(i=1;i<=m;i++)
{scanf("%ld %ld\n",&x,&y);
if(poli(x,y)) NR++;
}
freopen("poligon.out","w",stdout);
printf("%ld\n",NR);
return 0; }