Cod sursa(job #573088)
# include <fstream.h>
#include <algorithm>
#include<stdio.h>
using namespace std;
ifstream f("poligon.in");
ofstream g("poligon.out");
struct punct
{
int x,y;
float p;
}v[803],point[60003];
int n,i,M,MM,ok;
void citprime()
{
f>>n>>M;
for(i=1;i<=n;i++)
f>>v[i].x>>v[i].y;
for(i=1;i<=M;i++)
f>>point[i].x>>point[i].y;
}
bool exterior(int ax,int ay,int cx,int cy,int bx,int by)
{
if(double((ay-by)/(ax-bx))<double((ay-cy)/(ax-cx)))
return 1;
return 0;
}
int main()
{
citprime();
MM=M;
while(MM)
{
for(i=1;i<n;i++)
if(exterior(v[i].x,v[i].y,point[MM].x,point[MM].y,v[i+1].x,v[i+1].y))
ok=1,i=n+1;
if(exterior(v[n].x,v[n].y,point[MM].x,point[MM].y,v[1].x,v[1].y))
ok=1;
MM--;
if(ok)M--;
ok=0;
}
g<<M<<'\n';
f.close();
g.close();
return 0;
}