При хранении данных на жестких дисках типа HDD данные группируются по секторам. Все файлы разбиваются на фрагменты, которые в свою очередь записываются в некоторых секторах жесткого диска. При этом сектора, в которых находится один файл не обязательно следуют друг за другом и могут располагаться в произвольном порядке.
Одной из проблем HDD-носителей является то, что магнитная головка должна перемещаться от одного сектора к другому, чтобы считать один файл.
Вам требуется определить время за которое будет считан файл, разбитый на n фрагментов. В i-м секторе записан фрагмент файла номер fi (1 ≤ fi ≤ n). При этом в различных секторах находятся в различные фрагменты. Будем считать, что изначально магнитная головка находится в секторе, в котором записан первый фрагмент. Считывание происходит следующим образом: сначала считывается первый фрагмент, затем магнитная головка перемещается к сектору, содержащему второй фрагмент, считывается второй фрагмент и так далее пока не будет считан n-й фрагмент. Фрагменты считываются один за другим по порядку от 1-го до n-го.
На перемещение магнитной головки от a-го сектора до b-го уходит |a - b| единиц времени. Временем считывания информации можно пренебречь.
Примечание
Во втором примере магнитная головка двигается следующим образом:
- 1->2: передвижение из сектора 1 в сектор 5 — требует 4 единицы времени
- 2->3: передвижение из сектора 5 в сектор 2 — требует 3 единицы времени
- 3->4: передвижение из сектора 2 в сектор 4 — требует 2 единицы времени
- 4->5: передвижение из сектора 4 в сектор 3 — требует 1 единицы времени
Таким образом, ответ равен 4 + 3 + 2 + 1 = 10.