Pagini recente » Cod sursa (job #2850926) | Cod sursa (job #688094) | Cod sursa (job #520723) | Cod sursa (job #3003749) | Cod sursa (job #2043981)
#include <bits/stdc++.h>
using namespace std;
//Constants
const long long INF = std::numeric_limits<long long>::max();
const long long MOD = 1e9 + 7;
const long double PI = 3.141592653589793;
//MACROS
#define pb push_back
#define fi first
#define se second
#define rep(i, begin, end) for (int i = (begin); i < (end); i++)
#define per(i, begin, end) for (int i = (begin) - 1; i >= (end); i--)
typedef long long LL;
typedef pair <int,int> PII;
struct p{ int x, y; };
int sign(p p1, p p2, p p3) {
int det = (p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y);
return (0 < det) - (det < 0);
}
int n, m, ans;
p pt[1000];
int main() {
freopen("poligon.out","w",stdout);
freopen("poligon.in","r",stdin);
cin >> n >> m;
rep(i,0,n) cin >> pt[i].x >> pt[i].y;
rep(i,0,m) {
p cur, lim={0,0};
bool in = 0;
cin >> cur.x >> cur.y;
rep(j,0,n) {
int nxt = (j+1)%n;
if ((sign(cur,lim,pt[j]) * sign(cur,lim,pt[nxt]) < 0)
&& (sign(pt[j],pt[nxt],cur) * sign(pt[j],pt[nxt],lim) < 0)) in = !in;
}
ans += in;
}
cout << ans;
}