Pagini recente » Cod sursa (job #2723535) | Cod sursa (job #2840865) | Cod sursa (job #2381396) | Cod sursa (job #2202420) | Cod sursa (job #2206793)
#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;
}