P0840

[Usaco2007 Feb]Cow Sorting牛排序

[Usaco2007 Feb]Cow Sorting牛排序

农夫 John 准备将他的 NN 头牛排成一列,以便行动。由于脾气大的牛可能捣乱,John 希望按照脾气值从小到大的顺序排列所有牛。

每头牛的脾气值都是 11 到 10510^5 之间的整数,且任意两头牛的脾气值均不相同。在排序过程中,John 可以交换任意两头牛的位置。交换脾气值分别为 XX 和 YY 的两头牛需要花费 X+YX+Y 秒。

请计算将所有牛按要求排好序所需的最短时间。

输入格式

第一行包含一个整数 NN,表示牛的数量。

接下来 NN 行,每行包含一个整数。其中,第 ii 行表示初始队列中第 ii 头牛的脾气值。

输出格式

输出一个整数,表示将所有牛按脾气值从小到大排好序所需的最短时间。

样例输入

3
2
3
1

样例输出

7

样例解释

初始序列为 2,3,12,3,1。

先交换脾气值为 33 和 11 的牛,耗时 3+1=43+1=4 秒,序列变为 2,1,32,1,3。

再交换脾气值为 22 和 11 的牛,耗时 2+1=32+1=3 秒,序列变为 1,2,31,2,3。

总耗时为 4+3=74+3=7 秒。

数据范围

  • 1≤N≤1041\le N\le 10^4;
  • 每头牛的脾气值均为 11 到 10510^5 之间的整数;
  • 任意两头牛的脾气值均不相同。

来源与许可

本题为 USACO 2007 February 试题「Cow Sorting(牛排序)」,题面与测试数据整理自 BZOJ。

样例 1

输入

3
2
3
1

输出

7