T334455 犇犇学习

题目描述

犇犇⾮常讨厌学习,但是在众众不懈的努⼒教学下,还是成功写出了冒泡排序。 ``` for (int i = 1; i i; j--) { if (a[j] < a[j - 1]) { swap(a[j], a[j - 1]); // 交换a[j]和a[j - 1] } } } ``` 但是众众怀疑犇犇并没有真正学会冒泡排序,所以他想了⼀个⻓为n的序列a,序列中1到n各刚好出现⼀次,要 求犇犇⽤这个序列亲⼿模拟⼀遍冒泡排序。 然⽽犇犇不想模拟那么多次交换,所以她打算趁众众不注意,偷偷把任意两个数先调换⼀下位置,但是她不知道 调换哪两个数后,可以让冒泡排序时交换的次数最少,所以只好请你帮她算⼀下,她在模拟冒泡排序时最少要交换 多少次。 当然,犇犇也可以选择超级乖巧,在众众不注意时什么也不⼲。

输入格式

第⼀⾏包含整数n。 第⼆⾏包含n个整数ai,是⼀个n的排列。

输出格式

输出⼀个整数,表示犇犇在模拟冒泡排序时最少需要进⾏交换的次数。

说明/提示

【样例 1 解释】 调换a2和a6,排列变成[3,1,2,4,5,6],模拟冒泡排序时只需要交换2次 【样例 2 解释】 排列本身已经有序,不需要提前调换任何数,模拟冒泡排序时也不需要进⾏任何交换。 【数据规模】 对于30%的数据,1