小朋友排隊

2021-07-29 11:14:18 字數 1078 閱讀 5885

n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。

每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。

如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2(即不高興程度為3),依次類推。當要求某個小朋友第k次交換時,他的不高興程度增加k。

請問,要讓所有小朋友按從低到高排隊,他們的不高興程度之和最小是多少。

如果有兩個小朋友身高一樣,則他們誰站在誰前面是沒有關係的。

【資料格式】

輸入的第一行包含乙個整數n,表示小朋友的個數。

第二行包含 n 個整數 h1 h2 … hn,分別表示每個小朋友的身高。

輸出一行,包含乙個整數,表示小朋友的不高興程度和的最小值。

例如,輸入:

33 2 1

程式應該輸出:

9【樣例說明】

首先交換身高為3和2的小朋友,再交換身高為3和1的小朋友,再交換身高為2和1的小朋友,每個小朋友的不高興程度都是3,總和為9。

【資料規模與約定】

對於10%的資料, 1<=n<=10;

對於30%的資料, 1<=n<=1000;

對於50%的資料, 1<=n<=10000;

對於100%的資料,1<=n<=100000,0<=hi<=1000000。

資源約定:

峰值記憶體消耗 < 256m

cpu消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

隨便寫的,肯定會超時。。。。。。

public static void main(string args)

}} for(int b=0;b

小朋友排隊

n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3 依次類推...

小朋友排隊

問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3...

小朋友排隊

問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。每個小朋友都有乙個不高興的程度。開始的時候,所有小朋友的不高興程度都是0。如果某個小朋友第一次被要求交換,則他的不高興程度增加1,如果第二次要求他交換,則他的不高興程度增加2 即不高興程度為3...