제출 #172334

#제출 시각아이디문제언어결과실행 시간메모리
172334maruiiDragon 2 (JOI17_dragon2)C++14
15 / 100
4090 ms2296 KiB
#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
#define ff first
#define ss second

int ccw(pii a, pii b, pii c) {
	b = {b.ff - a.ff, b.ss - a.ss}, c = {c.ff - a.ff, c.ss - a.ss};
	long long t = 1ll * b.ff * c.ss - 1ll * b.ss * c.ff;
	return (t > 0) - (t < 0);
}

int N, M, Q;
vector<pii> P[30005];
pii X, Y;

int main() {
	ios_base::sync_with_stdio(0), cin.tie(0);
	cin >> N >> M;
	for (int i = 1; i <= N; ++i) {
		int a, b, c; cin >> a >> b >> c;
		P[c].emplace_back(a, b);
	}
	int d1, e1, d2, e2; cin >> d1 >> e1 >> d2 >> e2;
	X = {d1, e1}, Y = {d2, e2};
	cin >> Q;
	while (Q--) {
		int a, b; cin >> a >> b;
		int cnt = 0;
		for (auto i : P[a]) {
			for (auto j : P[b]) {
				if (ccw(i, j, X) != ccw(i, j, Y)) {
					if (ccw(i, j, X) < 0) swap(X, Y);
					if (ccw(X, Y, i) < 0) cnt++;
				}
			}
		}
		printf("%d\n", cnt);
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...