Pagini recente » Cod sursa (job #1413545) | Istoria paginii templates | Cod sursa (job #165615) | Cod sursa (job #1874705) | Cod sursa (job #1156568)
#include<fstream>
using namespace std;
typedef struct { int x,y; } punct;
punct poligon[805], multime[60005];
int i,j,n,m,sol,x,y,ok,nrm;
int det( punct a, punct b, int x, int y ) {
return ( a.x*b.y + y*b.x + x*a.y - x*b.y - y*a.x - b.x*a.y );
}
int main(void) {
ifstream fin("poligon.in");
ofstream fout("poligon.out");
fin>>n>>m;
for (i=1; i<=n; ++i) fin>>poligon[i].x>>poligon[i].y;
poligon[n+1]=poligon[1];
for (i=1; i<=m; ++i) {
fin>>x>>y;
ok=nrm=0;
for (j=1; j<=n; ++j)
if ( y>poligon[j].y&&y<=poligon[j+1].y ) {
int d=det(poligon[j], poligon[j+1], x,y);
if ( d < 0) ++nrm;
else if (d==0) ok=1;
}
else if (y>=poligon[j+1].y&&y<poligon[i].y) {
int d=det(poligon[j], poligon[j+1], x,y);
if ( d > 0) --nrm;
else if ( d==0 ) ok=1;
}
if (nrm%2>0||ok) ++sol;
}
fout<<sol<<"\n";
return(0);
}