|
Java Challenge
(Время: 2 сек. Память: 16 Мб Сложность: 56%)
Все участники олимпиад знают, что во время соревнования на счету каждая секунда. Иногда даже время, которое в суете затрачивается на переключение между окнами может оказаться критичным. В таких соревнованиях, как Java Challenge, количество окон может быть довольно большим (Java Challenge - это соревнование, проходящее в рамках финала чемпионата мира по программированию среди студентов. Оно состоит в разработке искусственного интеллекта для управления виртуальным роботом).
В данной задаче мы будем считать, что этот процесс выполняется следующим способом. В системе хранится циклический список открытых окон. При нажатии определенной комбинации клавиш k раз можно перейти в этом списке на k позиций в одну или в другую сторону. Кроме того, окна, относящиеся к каждому приложению так же организованы в циклический список. По этому списку также можно перемещаться в обе стороны, для перемещения на k позиций так же требуется k нажатий клавиш. При этом после своей активизации окно перемещаются в позицию перед первым элементом общего списка окон. Напишите программу, которая для каждого из окон будет определять минимальное количество нажатий клавиш, которое нужно затратить для его активизации. До начала выполнения операции активным является первое окно.
Входные данные
Первая строка входного файла INPUT.TXT содержит целое число n (1 ≤ n ≤ 50000) - количество открытых окон. Следующие n строк описывают окна в том порядке, в котором они идут в списке. Для каждого из окон задается номер приложения, которому соответствует это окно, и его номер в циклическом списке окон этого приложения.
Выходные данные
На единственной строке выходного файла OUTPUT.TXT для каждого окна выведите минимальное количество нажатий клавиш, которое надо затратить для его активации.
Пример
№ | INPUT.TXT | OUTPUT.TXT |
1 | 9
3 2
2 2
2 3
1 3
2 1
3 1
4 1
1 2
1 1 | 0 1 2 2 2 1 3 2 1 |
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
| |