11789. Перетин многокутників


Відправити розв'язок

Бали: 100
Time limit: 4.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
C++, Java, Pascal, Python

Вершини опуклого \(N\)-кутника \(P\) у площині \(xy\) задаються як (\(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N)\) у напрямку проти годинникової стрілки. (Тут додатний напрямок осі \(x\) правий, а додатний напрямок осі \(y\) догори.)

На основі цього багатокутника \(P\) розглянемо \(M\) опуклі \(N\)-кутники \(P_1, P_2, \ldots, P_M\).

Для \(i = 1, 2, \ldots, M\) багатокутник \(P_i\) отримується шляхом зміщення \(P\) в додатному напрямку осі \(x\) на \(u_i\) і в додатному нарпямку осі \(y\) на \(v_i\). Іншими словами, \(P_i\) є опуклим \(N\)-кутником, вершинами якого є (\(x_1+u_i, y_1+v_i), (x_2+u_i, y_2+v_i), \ldots, (x_N+u_i, y_N+v_i)\).

Для кожної з \(Q\) точок \((a_1, b_1), (a_2, b_2), \ldots, (a_Q, b_Q)\), визначте, чи «точка міститься у всіх \(M\) багатокутниках \(P_1, P_2, \ldots, P_M\)."

Тут ми вважаємо, що точка також міститься в багатокутнику, якщо ця точка знаходиться на межі багатокутника.

Обмеження

  • \(3 \leq N \leq 50\)
  • \(1 \leq M \leq 2 \times 10^5\)
  • \(1 \leq Q \leq 2 \times 10^5\)
  • \(-10^8 \leq x_i, y_i \leq 10^8\)
  • \(-10^8 \leq u_i, v_i \leq 10^8\)
  • \(-10^8 \leq a_i, b_i \leq 10^8\)
  • Усі значення у вхідних даних є цілими числами.
  • \((x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N)\) утворює опуклий \(N\)-кутник проти годинникової стрілки.
  • Кожен внутрішній кут багатокутника \(P\) менше 180 градусів.

Формат вхідних даних

Перший рядок містить ціле число \(N\)

Наступні  \(N\) рядків містять цілі числа \(x_i, y_i\)

Далі рядок містить ціле число \(M\)

Наступні  \(M\) рядків містять цілі числа \(u_i, v_i\)

Далі рядок містить ціле число \(Q\)

Наступні  \(Q\) рядків містять цілі числа \(a_i, b_i\)

Числа у рядках розділяються пропуском.

Формат вихідних даних

У вихідний потік виведіть \(Q\) рядків. Для \(i = 1, 2, \ldots, Q\) \(i\)-й рядок має містити Yes, якщо точка (\(a_i, b_i\)) міститься в усіх \(M\) багатокутниках \(P_1, P_2, \ldots, P_M\); інакше він повинен містити No.

Примітка

До прикладу 1:

Приклад вхідних даних

5
-2 -3
0 -2
1 0
0 2
-2 1
2
0 1
1 0
6
0 0
1 0
0 1
1 1
-1 -1
-1 -2

Приклад вихідних даних

Yes
No
Yes
Yes
Yes
No

Приклад вхідних даних

10
45 100
-60 98
-95 62
-95 28
-78 -41
-54 -92
-8 -99
87 -94
98 23
87 91
5
-57 -40
-21 -67
25 39
-30 25
39 -20
16
4 5
-34 -8
-63 53
78 84
19 -16
64 9
-13 7
13 53
-20 4
2 -7
3 18
-12 10
-69 -93
2 9
27 64
-92 -100

Приклад вихідних даних

Yes
Yes
No
No
Yes
No
Yes
No
Yes
Yes
Yes
Yes
No
Yes
No
No

Коментарі

Ще немає коментарів.