一本通1235 輸出前k大的數

2021-10-04 08:50:35 字數 1028 閱讀 6709

【題目描述】

給定乙個陣列,統計前k大的數並且把這k個數從大到小輸出。

【輸入】

第一行包含乙個整數n,表示陣列的大小。n < 100000。

第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開。每個整數的絕對值不超過100000000。

第三行包含乙個整數k,k < n。

【輸出】

從大到小輸出前k大的數,每個數一行。

【輸入樣例】

104 5 6 9 8 7 1 2 3 0

5【輸出樣例】98

765用了sort直接做會超時,得用分治快速排序,雖然我看的一知半解,當公式吧。

最後對了好幾遍答案,發現因為沒用scanf還會超時…

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

int n,a[

100009

],x;

bool

cmp(

int a,

int b)

void

qsort

(int a,

int l,

int r)

if(i==x)

return

;else

if(i>x)

qsort

(a,l,i-1)

;//如果我劃分的前i個大的數的個數 > 我所要尋找的個數,那麼我就在後半部分尋找

else

qsort

(a,i+

1,r)

;//如果我劃分的前i個大的數的個數 < 我所要尋找的個數,那麼我就在前半部分尋找

}int

main()

輸出前k大的數

010 輸出前k大的數 總time limit 10000ms 單個測試點時間限制 1000ms memory limit 65536kb description 給定乙個陣列,統計前k大的數並且把這k個數從大到小輸出。input 第一行包含乙個整數n,表示陣列的大小。n 100000。第二行包含n...

輸出前 k 大的數

總時間限制 10000ms 單個測試點時間限制 1000ms 記憶體限制 65536kb 描述 給定乙個陣列,統計前k大的數並且把這k個數從大到小輸出。輸入第一行包含乙個整數n,表示陣列的大小。n 100000。第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開。每個整數的絕對值不超過100...

輸出前k大的數

總時間限制 10000ms單個測試點時間限制 1000ms記憶體限制 65536kb noi 描述給定乙個陣列,統計前k大的數並且把這k個數從大到小輸出。輸入第一行包含乙個整數n,表示陣列的大小。n 100000。第二行包含n個整數,表示陣列的元素,整數之間以乙個空格分開。每個整數的絕對值不超過10...