Codeforces Round 776 (Div. 3) |
---|
Закончено |
Виталий записался на курс Advanced Useless Algorithms. Курс состоит из $$$n$$$ заданий. Виталий подсчитал, что до задания $$$i$$$ у него есть $$$a_i$$$ часов на выполнение, начиная с дня записи на курс. То есть, дедлайн до задания $$$i$$$ составляет $$$a_i$$$ часов. Массив $$$a$$$ отсортирован по возрастанию, другими словами, номера заданий соответствуют порядку сдачи заданий.
Виталий все делает добросовестно, поэтому он хочет выполнить каждое задание на $$$100$$$ процентов, или больше. Изначально его уровень выполнения по каждому заданию равен $$$0$$$ процентов.
У Виталия есть $$$m$$$ опций подготовки, каждая опция может быть использована не более одного раза. Опция $$$i$$$ характеризуется тремя целыми числами: $$$e_i, t_i$$$ и $$$p_i$$$. Если Виталий использует $$$i$$$-ю опцию, то через $$$t_i$$$ часов (с текущего момента) он улучшит выполнение задания $$$e_i$$$ на $$$p_i$$$ процентов.
Например, пусть Виталию предстоит выполнить $$$3$$$ задания. Пусть массив $$$a$$$ имеет вид: $$$a = [5, 7, 8]$$$. Допустим, Виталию доступны $$$5$$$ опций: $$$[e_1=1, t_1=1, p_1=30]$$$, $$$[e_2=2, t_2=3, p_2=50]$$$, $$$[e_3=2, t_3=3, p_3=100]$$$, $$$[e_4=1, t_4=1, p_4=80]$$$, $$$[e_5=3, t_5=3, p_5=100]$$$.
Тогда если Виталий будет готовиться следующим образом, он сможет выполнить все вовремя:
Таким образом, Виталий полностью и вовремя сумел пройти курс, использовав $$$4$$$ опции.
Помогите Виталию — выведите опции, по которым Виталию следует выполнить задания в нужном порядке. Обратите внимание: каждая опция может быть использована не более одного раза. Если существует несколько возможных ответов, разрешается вывести любой.
В первой строке входных данных записано целое число $$$T$$$ ($$$1 \le T \le 10^4$$$) — количество наборов входных данных в тесте.
Далее следуют описания наборов входных данных.
Первая строка описания каждого набора содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n,m \le 10^5$$$) — количество заданий и количество опций подготовки соответственно.
В следующей строке заданы $$$n$$$ чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^9$$$) — время до дедлайна задания $$$i$$$. Заданные значения — не убывают, то есть $$$a_1 \le a_2 \le \dots \le a_n$$$.
Следующие $$$m$$$ строк содержат тройки чисел $$$e_i, t_i, p_i$$$ ($$$1 \le e_i \le n$$$, $$$1 \le t_i \le 10^9$$$, $$$1 \le p_i \le 100$$$) — если Виталий выберет эту опцию, то через $$$t_i$$$ часов он улучшит выполнение задания с номером $$$e_i$$$ на $$$p_i$$$ процентов. Опции пронумерованы от $$$1$$$ до $$$m$$$ в порядке следования во входных данных.
Гарантируется, что сумма $$$n+m$$$ по всем наборам входных данных не превышает $$$2 \cdot 10^5$$$.
Для каждого набора входных данных выведите в первой строке число $$$k$$$, означающие что за $$$k$$$ опций Виталий сможет выполнить каждое задание на $$$100$$$ процентов или больше вовремя. Опции не должны повторяться. Либо выведите -1, если Виталий не имеет возможности выполнить все задания вовремя.
Если ответ существует, то в следующей строке выведите $$$k$$$ различных целых чисел от $$$1$$$ до $$$m$$$ — номера опций в нужном порядке. Если существует несколько ответов, разрешается вывести любой из них.
53 55 7 81 1 302 3 502 3 1001 1 803 3 1001 5511 36 911 8 401 42 831 3 451 13 402 99 202 8 642 7 641 20 562 8 762 20 481 2 891 3 382 18 661 7 513 27 18 331 5 803 4 372 5569452312 7035659751 928391659 661 915310 822 87017081 921 415310 542 567745964 82
4 1 4 3 5 3 2 4 5 4 6 7 1 2 -1 4 2 4 3 5
33 920 31 401 9 643 17 1003 9 593 18 573 20 492 20 822 14 951 8 752 16 672 620 362 2 662 20 931 3 461 10 642 8 492 18 401 110000000001 1000000000 100
-1 4 3 4 1 5 1 1
Название |
---|