Pagini recente » Cod sursa (job #1934449) | Cod sursa (job #381090) | Cod sursa (job #1320131) | Cod sursa (job #1677550) | Cod sursa (job #2207506)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("poligon.in");
ofstream fout("poligon.out");
const int NMAX = 800;
struct st{int x, y;} v[NMAX + 5], k;
int n;
int calc_arie(st a, st b, st c) {
return a.x * b.y - b.x * a.y + b.x * c.y - c.x * b.y + c.x * a.y - a.x * c.y > 0;
}
int verif1(st k) {
for(int i = 1; i < n; i++) {
if(calc_arie(v[i], v[i + 1], k) < 0)
return 0;
}
return 1;
}
int verif2(st k) {
for(int i = 1; i < n; i++) {
if(calc_arie(v[i], v[i + 1], k) > 0)
return 0;
}
return 1;
}
int main()
{
int m, nr = 0;
fin >> n >> m;
for(int i = 0; i < n; i++)
fin >> v[i].x >> v[i].y;
while(m--) {
fin >> k.x >> k.y;
int semn = calc_arie(v[0], v[1], k);
nr += (semn > 0) ? verif1(k) : verif2(k);
}
fout << nr << '\n';
fin.close();
fout.close();
return 0;
}