METERAIN - Mưa thiên thạch

Tác giả: ladpro98

Ngôn ngữ: C++

#include <bits/stdc++.h>
#define X first
#define Y second
#define long long long
const int N = 5050;
using namespace std;
typedef pair<int, int> ii;
void operator -= (ii& A, ii B) {A.X -= B.X; A.Y -= B.Y;}
bool CCW(ii &A, ii B, ii C) {C -= B; B -= A; return (long)B.X * C.Y >= (long)B.Y * C.X;}
int n, m;
ii a[N];

int main() {
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) scanf("%d %d", &a[i].X, &a[i].Y);
    scanf("%d", &m);
    ii b;
    while (m--) {
        scanf("%d %d", &b.X, &b.Y);
        bool inside = true; a[0] = a[n];
        for(int i = 1; i <= n; i++)
        if (CCW(a[i], a[i - 1], b)) {
            inside = false; break;
        }
        if (inside) printf("YES\n");
        else printf("NO\n");
    }
	return 0;
}

Download