Автор: | Центральная предметно-методическая комиссия по информатике | Ограничение времени: | 2 сек | |
Входной файл: | olympiad.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | olympiad.out | |||
Максимальный балл: | 100 |
На межрегиональной олимпиаде по программированию роботов соревнования проводятся в один тур и в необычном формате. Задачи участникам раздаются последовательно, а не все в самом начале тура, и каждая i-я задача становится доступной участникам в свой момент времени si. При поступлении очередной задачи каждый участник должен сразу определить, будет он ее решать или нет. В случае, если он выбирает для решения эту задачу, то у него есть ti минут на то, чтобы сдать ее решение на проверку, причем в течение этого времени он не может переключиться на решение другой задачи. Если же участник отказывается от решения этой задачи, то в будущем он не может к ней вернуться. В тот момент, когда закончилось время, отведенное на задачу, которую решает участник, он может начать решать другую задачу, ставшую доступной в этот же момент, если такая задача есть, или ждать появления другой задачи. При этом за правильное решение i-й задачи участник получает ci баллов.
Артур, представляющий на межрегиональной олимпиаде один из региональных центров искусственного интеллекта, понимает, что важную роль на такой олимпиаде играет не только умение решать задачи, но и правильный стратегический расчет того, какие задачи надо решать, а какие пропустить. Ему, как и всем участникам, до начала тура известно, в какой момент времени каждая задача станет доступной, сколько времени будет отведено на ее решение и сколько баллов можно получить за ее решение. Артур является талантливым школьником и поэтому сможет успешно решить за отведенное время и сдать на проверку любую задачу, которую он выберет для решения на олимпиаде.
Требуется написать программу, которая определяет, какое максимальное количество баллов Артур сможет получить при оптимальном выборе задач, которые он будет решать, а также количество и перечень таких задач.
В первом примере Артур успевает решить все задачи и получить три балла.
Во втором примере Артуру выгоднее решать последнюю задачу и получить за нее три балла, чем решать только первые две и получить два балла.
Частичные правильные решения для тестов, в которых все ci одинаковы и n ≤ 1000, оцениваются из 30 баллов.
Частичные правильные решения для тестов, в которых все ci одинаковы, оцениваются из 50 баллов.
Частичные правильные решения для тестов, в которых n ≤ 1000, оцениваются из 50 баллов.
Первая строка входного файла содержит одно целое число n — количество задач на олимпиаде.
Последующие n строк содержат описания задач, по три числа на каждой строке: si — момент появления i-й задачи в минутах, ti — время, отведенное на ее решение в минутах, и ci — сколько баллов получит участник за решение этой задачи.
Первая строка выходного файл должна содержать одно число -– максимальное количество баллов, которое сможет получить Артур на олимпиаде.
Вторая строка должна содержать одно целое число m — количество задач, которые надо решить при оптимальном выборе.
Третья строка должна содержать m разделенных пробелом целых чисел — номера этих задач в порядке их решения. Задачи пронумерованы, начиная с единицы, в порядке их описания во входном файле.
Если оптимальных ответов несколько, необходимо вывести любой из них.
1 ≤ i ≤ n ≤ 105;
1 ≤ si, ti, ci ≤ 109
№ | Входной файл (olympiad.in ) |
Выходной файл (olympiad.out ) |
---|---|---|
1 |
|
|
2 |
|
|