Обідня перерва
Обмеження: 2 сек., 512 МіБ
Виконавши швидке доручення Шефа, Зеник добряче так зголоднів. Місцева їдальня розташована в крайньому проході офісу. Хоча місце є доволі просторим та комфортним, та є один нюанс — воно єдине. Такі дрібниці ніщо у порівнянні з голодним шлунком.
Всього в компанії є n працівників. Працівник i (1≤i≤n) планує прийти на обід в момент часу ti (причому немає двох працівників, які планують прийти до їдальні в той самий момент часу) та їстиме свій обід si часу. За таких обставин існує ймовірність виникнення черги, тож кожен працівник має певне обмеження на очікування pi — максимальну кількість часу, яку він може стояти в черзі.
Вас же просять знайти кількість працівників, яким таки вдасться пообідати та вивести їхні номери в порядку прийому їжі. Двоє людей не можуть одночасно обідати. Часом на перехід людей можете знехтувати — якщо якийсь працівник закінчує обід в час t, то наступний може почати в той самий момент.
Вхідні дані
У першому рядку задано одне ціле число n — кількість працівників компанії.
У другому рядку задано n цілих чисел ti, де i-те число позначає час приходу на обід i-го працівника.
У третьому рядку задано n цілих чисел si, де i-те число позначає тривалість обіду i-го працівника.
У четвертому рядку задано n цілих чисел pi, де i-те число позначає максимальний час очікування i-го працівника.
Вихідні дані
У першому рядку виведіть ціле число k — кількість людей, яким вдасться пообідати.
У другому рядку виведіть k цілих чисел — номери працівників в порядку, в якому вони обідали.
Обмеження
1≤n≤2⋅105,
1≤ti,si,pi≤108,
Усі ti — унікальні.
Оцінювання складається з таких блоків:
по 1 балу за кожен приклад з умови,
7 балів: n≤15, ti<ti+1, ti≤1000, si≤1000, pi≤1000,
10 балів: n≤1000, ti<ti+1, ti≤1000, si≤1000, pi≤1000,
16 балів: n≤1000, ti<ti+1,
8 балів: ti+si<ti+1,
17 балів: ti<ti+1,
40 балів: без додаткових обмежень.
Бали за блок ви отримаєте, тільки якщо ваша програма пройде всі тести з блоку.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
4 1 4 7 9 4 5 8 7 2 1 2 4 | 3 1 2 4 |
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
4 4 5 6 7 7 1 1 1 4 4 4 3 | 1 1 |
Примітки
У першому прикладі перший працівний приходить на обід в момент t1=1 та завершує свій обід в момент t1+s1=5. Другий працівник приходить в момент t2=4, проте змушений чекати ще 1 хвилину, поки перший працівний завершить свій обід. Таким чином, другий працівник закінчить обід в момент 5+s2=10. Третій працівник приходить в момент часу t3=7, його максимальний час очікування p3=2, тобто він покидає чергу. Таким чином четвертий працівник приходить в t4=9, чекає 1хв та розпочинає обід.
У другому прикладі лише перший працівник пообідає, всі інші покинуть їдальню, не дочекавшись своєї черги.