Это неправильно - я написал почему внизу:
[[Пробежать список.До вашего индекса считайте каждый элемент с таким же или более высоким приоритетом, чем у одного.После вашего индекса считайте только элементы со строго более высоким приоритетом, чем ваш элемент, как один до последнего индекса с более высоким приоритетом.После этого индекса возобновите подсчет всех элементов с тем же приоритетом, что и у вас, как у одного.Это дает вам количество элементов, которые будут напечатаны перед вашим элементом, поэтому добавьте одну минуту для вашего собственного элемента.
Надеюсь, это поможет.
РЕДАКТИРОВАТЬ:
Дляуточнить: переименуем все элементы в очереди в соответствии с их приоритетом.l ниже, e равно, а h выше.w - разыскиваемый документ.Тогда последовательность вопросов будет такой:
w e h e e e
Мы начнем с подсчета числа e и h до w , поскольку они будут напечатаны до w .(Символы перемещаются в конец очереди до w , а h обрабатываются первыми.) В этом примере до w * нет элементов.1025 *, поэтому мы считаем 0.
После w мы считаем только h , так как они перемещаются в начало очереди.В этом примере только 1.
Наконец, мы подсчитываем число e после последнего h после w (еслипосле w ) есть h ), поскольку w отстает от этих e .Их 3, поэтому в общей сложности у нас есть 4 задания на печать, прежде чем наши собственные.Добавляя нашу собственную работу печати, мы получаем в общей сложности пять заданий / минут.
Для этого нам нужно просмотреть список дважды, один раз, чтобы найти последние ч , и один раз, чтобысделать подсчет.
РЕДАКТИРОВАТЬ:
С новым примером.Давайте предположим, что наша очередь составляет 2, 2 ', 9, 8, 2, 1, 7, где 2' - это наш документ.
Первое, что происходит, это то, что первые 2 отправляются обратноочереди, за которой следуют 2 ':
2 2' 9 8 2 1 7
2' 9 8 2 1 7 2
9 8 2 1 7 2 2'
Затем печатаются 9 и 8, оставляя нам 2, 1, 7, 2, 2'.Теперь 2 и 1 отправляются обратно.
2 1 7 2 2'
1 7 2 2' 2
7 2 2' 2 1
И 7 печатается.Нам осталось 2, 2 ', 2, 1. Они печатаются по порядку, а 2' печатается как 5-й элемент в целом.
Если мы выполним процедуру, описанную выше, мы перепишем это как:
2 2 9 8 2 1 7
e w h h e l h
До w мы считаем 0 экземпляров h и 1 случай e .Это 2, который позже напечатан прямо перед нашим.После w мы считаем 3 h и 0 e после последнего h .Это означает, что есть три элемента (9, 8 и 7), которые будут напечатаны раньше нашего, в то время как e и l (2 и 1) не будут.
Всего мы насчитали 4 элемента, напечатанных раньше, чем наш, и наш - 5-й.]]
Я не думал, что элементы могут занять несколько раундов.Вышесказанное имеет место, когда задания с более высоким приоритетом находятся в порядке убывания, но контрпример - (1 ', 2, 1, 3), как указал Руах.