NKLAND - Mảnh đất tổ tiên
Tác giả: happyboy99x
Ngôn ngữ: C++
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<complex>
using namespace std;
typedef complex<double> Point;
const int N = 1000, TIME = 100;
Point mul (cos(M_PI/TIME), sin(M_PI/TIME));
Point p1[N], p2[N];
int m, n;
void enter(int &n, Point p[N]) {
cin >> n;
for(int i = 0; i < n; ++i)
cin >> p[i].real() >> p[i].imag();
}
bool cmp(const Point &a, const Point &b) {
return a.real() < b.real();
}
int main() {
ios::sync_with_stdio(false);
int tc; cin >> tc;
while(tc--) {
enter(m, p1); enter(n, p2);
bool cut = true;
for(int i = 0; i < TIME; ++i) {
if(max_element(p1, p1+m, cmp)->real() < min_element(p2, p2+n, cmp)->real() ||
max_element(p2, p2+n, cmp)->real() < min_element(p1, p1+m, cmp)->real()) {
cut = false;
break;
}
for(int i = 0; i < m; ++i) p1[i] *= mul;
for(int i = 0; i < n; ++i) p2[i] *= mul;
}
cout << (cut ? "YES" : "NO") << endl;
}
return 0;
}