前m大的數

2021-08-28 08:31:05 字數 987 閱讀 5140

problem description

還記得gardon給小希布置的那個作業麼?(上次比賽的1005)其實小希已經找回了原來的那張數表,現在她想確認一下她的答案是否正確,但是整個的答案是很龐大的表,小希只想讓你把答案中最大的m個數告訴她就可以了。

給定乙個包含n(n<=3000)個正整數的序列,每個數不超過5000,對它們兩兩相加得到的n*(n-1)/2個和,求出其中前m大的數(m<=1000)並按從大到小的順序排列。

input

輸入可能包含多組資料,其中每組資料報括兩行: 第一行兩個數n和m, 第二行n個數,表示該序列。

output

對於輸入的每組資料,輸出m個數,表示結果。輸出應當按照從大到小的順序排列。

sample input

4 4

1 2 3 4

4 55 3 6 4

sample output

7 6 5 5

11 10 9 9 8

之前陣列開的太小,導致時間超限,然後我想將陣列開大一點,但是執行時無法輸入資料,在函式裡面不適合定義很大的臨時陣列變數,但是大陣列要定義在main函式外不會出現這個問題,全域性變數在靜態儲存區分配記憶體,區域性變數是在棧上分配記憶體空間的。(c語言程式在執行時會動態建立乙個堆疊段,裡面存放著呼叫棧,儲存著函式的呼叫關係和區域性變數。)如果陣列太大,可能會造成棧溢位。

下面是**:

#include

#include

#include

int b[5000000];//兩數相加後儲存在這個陣列之中

int a[3050];

using namespace std;

int main()

for(i=0;isum-m;i--)//sort排序是從小到大,所以從最後乙個數字,也可以定義乙個函式,實現sort從大到小排序

printf("%d\n",b[sum-m]);

}return 0;

}

前m大的數

total submission s 13762 accepted submission s 4693 problem description 還記得gardon給小希布置的那個作業麼?上次比賽的1005 其實小希已經找回了原來的那張數表,現在她想確認一下她的答案是否正確,但是整個的答案是很龐大的表...

前m大的數

a 前m大的數 sort time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 還記得gardon給小希布置的那個作業麼?上次比賽的1005 其實小希已經找回了原來的那張數表,...

前m大的數

hpu2017 sort 結構體練習 virtual judge 還記得gardon給小希布置的那個作業麼?上次比賽的1005 其實小希已經找回了原來的那張數表,現在她想確認一下她的答案是否正確,但是整個的答案是很龐大的表,小希只想讓你把答案中最大的m個數告訴她就可以了。給定乙個包含n n 3000...