胡潤研究院的調查顯示,截至2023年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。
輸入首先給出兩個正整數n(≤10^6 )和m(≤10),其中n為總人數,m為需要找出的大富翁數;接下來一行給出n個人的個人資產值,以百萬元為單位,為不超過長整型範圍的整數。數字間以空格分隔。
在一行內按非遞增順序輸出資產排前m位的大富翁的個人資產值。數字間以空格分隔,但結尾不得有多餘空格。
//input83
81273
209518
//output
2018
12
要考慮m>n的情況
排序方法的選擇,選擇效率高的,要考慮最壞的情況,題目測試的乙個點就是資料量大。比如快速排序會超時(自己寫就會,使用系統的sort就不會),所以選擇歸併排序。
看到乙個不錯的方法解這個題:
#include
#include
int k[
1000005];
//原陣列
int t[
1000005];
//輔助陣列
void
merge
(int sr,
int tr,
int left,
int mid,
int right)
while
(i <= ii)
//將左半部分陣列的剩餘元素新增進tr
tr[flag++
]= sr[i++];
while
(j <= jj)
//將右半部分陣列的剩餘元素新增進tr
tr[flag++
]= sr[j++];
for(
int index = left; index < flag; index++
)//用輔助陣列更新原陣列
sr[index]
= tr[index];}
void
msort
(int sr,
int tr,
int left,
int right)
}int
main()
pta 尋找大富翁
5 12 尋找大富翁 25分 2015年胡潤研究院的調查顯示,截至2014年9月,個人資產在600萬元以上高淨值人群達290萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入格式 輸入首先給出兩個正整數nnn 106 le 10 6 10 和mmm 10 le 10 10 其中n...
資料結構 PTA 尋找大富翁 排序
7 17 尋找大富翁 25分 胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入首先給出兩個正整數n 10 6 和m 10 其中n為總人數,m為需要找出的大富翁數 接下來一行給出n個人的個人資產值,以...
PTA 7 3 尋找大富翁
胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入格式 輸入首先給出兩個正整數n 10 6 和m 10 其中n為總人數,m為需要找出的大富翁數 接下來一行給出n個人的個人資產值,以百萬元為單位,為不超...