010 輸出前k大的數

2022-08-15 06:21:13 字數 1062 閱讀 9570

描述

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

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

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

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

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

樣例輸入

10

4 5 6 9 8 7 1 2 3 0

5

樣例輸出

987

65

檢視運用快速排序思想,將區間分成兩半,一半比某個數都大,一半比某個數都小。

#include#include

#include

#include

#include

#include

#include

#include

#define debug(x) cout << #x << " = " << x << endl

using

namespace

std;

const

int maxn=1e5+10

;int

n;int

a[maxn];

bool cmp(int a,int

b)int arrangeright(int a,int l,int r,int

k)int i=l,j=r;

int n=r-l+1

;

int key=a[l];

while(iif(r-i+1==k)

else

if(r-i+1>k)

else

}int

main()

intm;

scanf("%d

",&m);

int p=arrangeright(a,0,n-1

,m);

sort(a+p,a+n,cmp);

for(int i=p;i)

return0;

}

OpenJudge 010 輸出前k大的數

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

輸出前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...