Cod sursa(job #67971)
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
long x,y;
}Punct;
long sol=0,n,m;
Punct a[809],b[61000];
void read()
{
FILE*f=fopen("poligon.in","r");
fscanf(f,"%ld %ld",&n,&m);
int i;
for(i=1;i<=n;++i) fscanf(f,"%ld %ld",&a[i].x,&a[i].y);
for(i=1;i<=n;++i) fscanf(f,"%ld %ld", &b[i].x,&b[i].y);
}
int arie(Punct a, Punct b, Punct c)
{
long arie;
arie=(b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
return abs(arie);
}
FILE*g=fopen("poligon.out","w");
int main()
{
read();
int i,j,s,area,S=0;
for(i=2;i<n;++i)
S+=arie(a[1],a[i],a[i+1]);
for(i=1;i<=m;++i)
{
area=0;
for(j=1;j<=n;++j)
{
s=arie(b[i],a[j],a[j%n+1]);
area+=s;
}
if(area==S) sol++;
}
fprintf(g,"%ld\n",sol);
return 0;
}