0%

CodeForces 1418B

CodeForces 1418B - Negative Prefixes

題目網址

題意:

你有一個陣列a,裡面有n個整數,有些整數被鎖住有些沒有,你能對沒有鎖住的整數做交換位置的動作(沒鎖對沒鎖),另外有個序列p,為a1~an的總和:p1 = a1, p2 = a1 + a2… pn = a1 + a2 +…+ an
讓k為最大值j,並且pj < 0 ,若p中沒有任何pj < 0,則 k=0
你要交換未鎖住整數的位置,使得k為最小值,印出調整過後的陣列a

思路:

將沒鎖住的整數獨立出來,由大到小排序,再依序從頭一一放回陣列中沒鎖住的位置。
不考慮鎖住的數字,當正整數總和 >= 負整數總和時,將正整數排前面則k=0
當正整數總和 < 負整數總和時,則不管甚麼順序k最大
不選擇小排到大是因為第一個狀況,若負整數先在前面則k值不會最小

程式碼: