Ограничения: время – 2s/4s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
На межрегиональной олимпиаде по программированию роботов соревнования проводятся в один тур и в необычном формате. Задачи участникам раздаются последовательно, а не все в самом начале тура, и каждая `i`-я задача (`1 ≤ i ≤ n`) становится доступной участникам в свой момент времени `s_i`. При поступлении очередной задачи каждый участник должен сразу определить, будет он ее решать или нет. В случае, если он выбирает для решения эту задачу, то у него есть `t_i` минут на то, чтобы сдать ее решение на проверку, причем в течение этого времени он не может переключиться на решение другой задачи. Если же участник отказывается от решения этой задачи, то в будущем он не может к ней вернуться. В тот момент, когда закончилось время, отведенное на задачу, которую решает участник, он может начать решать другую задачу, ставшую доступной в этот же момент, если такая задача есть, или ждать появления другой задачи. При этом за правильное решение `i`-й задачи участник получает `c_i` баллов.
Артур, представляющий на межрегиональной олимпиаде один из региональных центров искусственного интеллекта, понимает, что важную роль на такой олимпиаде играет не только умение решать задачи, но и правильный стратегический расчет того, какие задачи надо решать, а какие пропустить. Ему, как и всем участникам, до начала тура известно, в какой момент времени каждая задача станет доступной, сколько времени будет отведено на ее решение и сколько баллов можно получить за ее решение. Артур является талантливым школьником и поэтому сможет успешно решить за отведенное время и сдать на проверку любую задачу, которую он выберет для решения на олимпиаде.
Требуется написать программу, которая определяет, какое максимальное количество баллов Артур сможет получить при оптимальном выборе задач, которые он будет решать, а также количество и перечень таких задач.
Формат входного файла
Первая строка входного файла содержит одно целое число `n` (`1 ≤ n ≤ 100 000`) – количество задач на олимпиаде.
Последующие `n` строк содержат описания задач, по три целых числа на каждой строке:
`s_i` – момент появления `i`-й задачи в минутах, `t_i` – время, отведенное на ее решение в минутах, и `c_i` – сколько баллов получит участник за решение этой задачи (`1 ≤ s_i,\ t_i,\ c_i ≤ 10^9`).
Формат выходного файла
Первая строка выходного файл должна содержать одно число – максимальное количество баллов, которое сможет получить Артур на олимпиаде.
Вторая строка должна содержать одно целое число `m` – количество задач, которые надо решить при оптимальном выборе.
Третья строка должна содержать `m` разделенных пробелом целых чисел – номера этих задач в порядке их решения. Задачи пронумерованы, начиная с единицы, в порядке их описания во входном файле.
Если оптимальных ответов несколько, необходимо вывести любой из них.
Пример ввода 1
2
1 1 1
2 2 2
Пример ввода 2
3
1 2 1
3 2 1
2 4 3
Пояснения к примерам
В первом примере Артур успевает решить все задачи и получить три балла.
Во втором примере Артуру выгоднее решать последнюю задачу и получить за нее три балла, чем решать только первые две и получить два балла.
Система оценивания
Частичные правильные решения для тестов, в которых все `c_i` одинаковы и `n ≤ 1000`, оцениваются из 30 баллов.
Частичные правильные решения для тестов, в которых все `c_i` одинаковы, оцениваются из 50 баллов.
Частичные правильные решения для тестов, в которых `n ≤ 1000`, оцениваются из 50 баллов.
Источник: региональный этап Всероссийской олимпиады по информатике 2013/2014, http://neerc.ifmo.ru/school/