【題目描述】
給定乙個陣列,統計前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...