[Usaco2007 Feb]Cow Sorting牛排序
农夫 John 准备将他的 头牛排成一列,以便行动。由于脾气大的牛可能捣乱,John 希望按照脾气值从小到大的顺序排列所有牛。
每头牛的脾气值都是 到 之间的整数,且任意两头牛的脾气值均不相同。在排序过程中,John 可以交换任意两头牛的位置。交换脾气值分别为 和 的两头牛需要花费 秒。
请计算将所有牛按要求排好序所需的最短时间。
输入格式
第一行包含一个整数 ,表示牛的数量。
接下来 行,每行包含一个整数。其中,第 行表示初始队列中第 头牛的脾气值。
输出格式
输出一个整数,表示将所有牛按脾气值从小到大排好序所需的最短时间。
样例输入
3
2
3
1
样例输出
7
样例解释
初始序列为 。
先交换脾气值为 和 的牛,耗时 秒,序列变为 。
再交换脾气值为 和 的牛,耗时 秒,序列变为 。
总耗时为 秒。
数据范围
- ;
- 每头牛的脾气值均为 到 之间的整数;
- 任意两头牛的脾气值均不相同。
来源与许可
本题为 USACO 2007 February 试题「Cow Sorting(牛排序)」,题面与测试数据整理自 BZOJ。
样例 1
输入
3
2
3
1
输出
7