Universal Cup Judging System

Universal Cup

Limite de temps : 1 s Limite de mémoire : 1024 MB
Statistiques

На плоскости даны $n$ точек $P_1, P_2, \ldots, P_n$. У VegiCat есть к вам $q$ запросов. В каждом запросе задаётся точка $P$.

problem_23596_6ec10fe5fc25c17116e0feb55e9f3d78.png

Для каждого запроса постройте простой многоугольник, используя некоторые из данных точек в качестве его вершин. Многоугольник должен содержать точку $P$ строго внутри себя и иметь минимальное количество вершин. Если такого многоугольника не существует, выведите $-1$.

Простой многоугольник — это замкнутая ломаная как минимум с тремя различными вершинами. Соседние рёбра пересекаются только в их общей концевой точке, а несоседние рёбра не пересекаются.

problem_23596_a5610273068183d75d3104e4c9c1d828.png

Примеры простых и непростых многоугольников

Входные данные

Первая строка содержит целое число $T$ ($1 \le T \le 2 \cdot 10^4$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два положительных целых числа $n$ и $q$ ($3 \le n \le 10^5$, $1 \le q \le 10^5$), обозначающих количество данных точек и количество запросов соответственно.

$i$-я из следующих $n$ строк содержит два целых числа $x_i$ и $y_i$ ($-10^9 \le x_i, y_i \le 10^9$) — координаты точки $P_i$. Гарантируется, что все эти $n$ точек попарно различны.

Каждая из следующих $q$ строк содержит два целых числа $x$ и $y$ ($-10^9 \le x, y \le 10^9$) — координаты запрашиваемой точки.

Гарантируется, что сумма $n$ по всем наборам входных данных не превосходит $10^5$.

Гарантируется, что сумма $q$ по всем наборам входных данных не превосходит $10^5$.

Выходные данные

Для каждого запроса, если многоугольника, удовлетворяющего требованиям, не существует, выведите одно целое число $-1$ в отдельной строке.

В противном случае выведите многоугольник с минимальным количеством вершин. В первой строке выведите одно целое число $m$ — количество вершин.

Во второй строке выведите $m$ целых чисел $a_1, a_2, \ldots, a_m$ ($1 \le a_i \le n$) — индексы вершин по порядку. Многоугольник имеет вид $P_{a_1} P_{a_2} \ldots P_{a_m}$. Вершины можно выводить в порядке обхода как по часовой стрелке, так и против часовой стрелки.

Индексы должны быть попарно различны, а выведенный многоугольник должен быть простым и содержать запрашиваемую точку строго внутри себя. Если решений несколько, выведите любое из них.

Примеры

Входные данные 1

2
5 1
0 4
-3 0
-3 -3
3 -3
3 0
0 0
3 1
0 4
-3 0
3 0
0 0

Выходные данные 1

3
4 1 2
-1

Примечание

В первом наборе входных данных треугольник $P_4 P_1 P_2$ содержит запрашиваемую точку $P = (0, 0)$ строго внутри себя. Поскольку у многоугольника не менее трёх вершин, этот треугольник имеет минимальное количество вершин.

Во втором наборе входных данных единственный возможный многоугольник — это треугольник $P_1 P_2 P_3$. Запрашиваемая точка $P = (0, 0)$ лежит на стороне $P_2 P_3$, поэтому ответ равен $-1$.

problem_23596_b7e688351da0758f2f7d7d3948442e24.png

Иллюстрации к примерам из условия

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.