Cod sursa(job #2206793)

Utilizator Alex_BubBuburuzan Alexandru Alex_Bub Data 23 mai 2018 20:20:19
Problema Poligon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#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;
}