Відстань до многокутника
На площині задано опуклий многокутник. Вам необхідно обчислити результат виконання заданої кількості запитів.
Кожен запит - це координати деякої точки на площині. Результатом виконання запиту є відстань від цієї точки до многокутника (відстань від заданої точки до многокутника - це найменша відстань від цієї точки до будь-якої точки всередині або на границі многокутника).
Вхідні дані
У першому рядку задано число n (3 ≤ n ≤ 4000) - кількість вершин многокутника.
Далі в n рядках перераховані координати вершин многокутника у порядку обходу проти годинникової стрілки. Ніякі три вершини не лежать на одній прямій. Кожна вершина задається цілочисельними координатами x, y (-15000 ≤ x, y ≤ 15000).
У наступному рядку задано п'ять цілих чисел: q, a, b, c, d (1 ≤ q ≤ 10^6
, 0 ≤ a, b, c, d ≤ 15000) - кількість запитів і коефіцієнти перерахунку, що дозволяють обчислити координати наступного запиту за координатами і результатом виконання попереднього.
В останньому рядку записані два цілих числа x[1]
, y[1]
(-15000 ≤ x[1]
, y[1]
≤ 15000) - координати точки першого запиту.
Координати точок кожного з наступних запитів обчислюються через координати і результат виконання попередніх запитів наступним чином. Якщо в i-му запиті координати точки були x[i]
, y[i]
, а відповідь на запит дорівнює d[i]
, то i + 1 - им запитом буде точка з координатами
x[i+1]
= ((x[i]
+ 15000) * (round(d[i]
) + a) + b) % 30001 - 15000;
y[i+1]
= ((y[i]
+ 15000) * (round(d[i]
) + c) + d) % 30001 - 15000;
Округлення round(d[i]
) виконують до найближчого цілого.
Вихідні дані
Виведіть єдине число – відповідь на останній запит з абсолютною або відносною похибкою 10^(-8)
.