|
问题描述:
最近,WH市的小九华广场即将竣工。市长顾问小明提出了一项建议:在广场上树立N根高度互不相等的白玉灯柱。夜间,这些白玉灯柱逐一闪亮,由低至高,如此场景必将十分的绚丽夺目。然而,在灯柱安放完毕后,小明才发现粗心的工人并没有按照从低到高的顺序安放灯柱!由于灯柱已经树立起来,不可能全部推倒重新安放。因此,小明只能借助巨型吊车每次将两个灯柱的位置交换。
例如,有3个灯柱初始时高度顺序是:3 1 2。可以先用吊车交换后两个灯柱的位置,得到3 2 1,再交换第一和第三个灯柱,得到最终序列1
2 3。 毕竟,用吊车交换灯柱位置可不是一件容易的事情,灯柱越高其重量越大,交换的难度也就越高。小明估算出,每一次交换的难度等于交换的两个灯柱的高度的和。而整个交换方案的难度等于每次交换难度的总和。
例如先前的交换方案。原先3 1 2,交换后两个(难度为1+2=3),得到3 2 1,再交换第一和第三个(难度为3+1 = 4),得到1
2 3。因此,该方案的难度为3+4 =7。
为了使交换工作尽快完成,难度最低的交换方案自然是首选了。小明虽然知道选择,冒泡,插入,归并,快速甚至堆排序。然而,在该问题面前,这些方法看起来似乎毫无用武之地!你能帮助他么?
输入文件:sort.in
输入文件第一行有一个数N,表示灯柱的数目。(1 ≤ N ≤ 1000)
第二行有N个互不相同的正整数( ≤ 1000),依次描述安放后灯柱的高度。
输出文件:sort.out
输出文件有一行,一个整数表示交换方案的最低难度值。
样例输入:sort.in
3
3 1 2
样例输出:sort.out
7
|