#P1232. 数列排序(sort)

数列排序(sort)

题目内容

给定一个数列 {an}\{a_n\} ,这个数列满足 aiaj(ij)a_i \neq a_j(i \neq j) ,现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换?

输入格式

从文件 sort.insort.in 中读入数据。

第一行,正整数 nn

接下来,一共 nn 个数,用空格分隔开,表示数列 {an}\{a_n\}

输出格式

输出答案到文件 sort.outsort.out 中。

只有一行,包含一个数,表示最少的交换次数。

样例

样例输入

8
8 23 4 16 77 -5 53 100

样例输出

5

手动模拟可以发现最少需要 55 次。

数据范围与提示

对于 100%100\% 的数据,有 n105,231ai231n \le 10^5 , -2^{31} \le a_i \le 2^{31}

  • 时间限制:1000ms1000\mathrm{ms}
  • 空间限制:256MB256\mathrm{MB}

大样例下载