Обработка видео
С видеокамеры поступают кадры. Они помещаются в общую очередь на обработку на видеокарте. Известен момент времени появления каждого кадра в этой очереди. Каждый кадр должен пройти через обработку на одной из видеокарт, после чего результат обработки отправляется клиенту. Всего имеется N видеокарт, каждая из которых обрабатывает кадр за T мс. Одновременно одна видеокарта не может обрабатывать больше одного кадра. Если все видеокарты заняты, то кадр в начале очереди ждёт, пока одна из карт не освободится. Результаты обработки кадров со всех видеокарт помещаются во вторую общую очередь, которая обрабатывается отдельным процессом по следующему принципу. Пока очередь пуста, процесс ждёт появления первого результата. Как только результат появляется, процесс тут же начинает передавать его клиенту. Время передачи составляет V мс. Соответственно, через V мс после начала передачи процесс будет готов передавать следующий результат. Для каждого кадра необходимо вычислить момент времени, когда результат по его обработке появится у клиента. Можно считать, что операции добавления и извлечения из очередей происходят мгновенно. Входные данные В первой строке записаны 4 числа через пробел:
Выходные данные Для каждого кадра выведите в отдельной строке время получения результата обработки кадра клиентом. Ваша программа должна работать в интерактивном режиме, то есть выводить ответ сразу после чтения очередного входного числа. Следующее входное число станет доступно для чтения лишь после вывода ответа на предыдущее. После вывода каждого ответа программа должна выполнить операцию flush (см. примечание ниже). Примеры Входные данные 4 2 10 100 Выходные данные 111 Входные данные 8 2 5 1 Выходные данные 7 Примечание Операция flush (сброс данных из буфера в поток) для разных языков выполняется следующим образом:
| |||||||
|