#368. 书架还原
书架还原
题目描述
在一个偏远的图书馆里,有个书架上放着 本书,每本书上都标有一个从 到 的唯一编号。
按照规矩,这些书应该按编号从小到大依次排列: 号书位于最左端, 号书紧随其后,以此类推,直到 号书在最右端。这样的顺序不仅看起来整齐,也方便读者快速找到想借的书。
可昨天店里人来人往,借书还书忙得不可开交,书架上的顺序出现了错乱。现在,书架上的书变成了 ,其中 表示第 个位置上的书编号。
管理员决定动手整理书架,但时间有限,他希望用最少的操作把书的顺序恢复到正确的排列。每次操作,他可以挑选书架上任意两本书,交换它们的位置。例如,如果当前排列是 ,他可以交换第 本和第 本,得到 ,再交换第 本和第 本,得到 。
你的任务是帮助管理员计算,最少需要进行多少次操作,才能让书架上的书的编号排列变为 。
输入格式
输入的第一行包含一个正整数 ,表示书架上书的总数。
第二行包含 个正整数 ,相邻整数之间使用一个空格分隔,依次表示当前书架上每本书的编号。 是一个 到 的排列。
输出格式
输出一行包含一个整数表示答案,即将书架上的书恢复到正确排列所需的最少操作次数。
样例
3
3 1 2
2
数据范围
- 对于 的评测用例,,, 各不相同;
- 对于所有评测用例,,, 各不相同。