1. 程式人生 > >openjudge 7617:輸出前k大的數

openjudge 7617:輸出前k大的數

blog int problem () ram -c 並且 show algorithm

7617:輸出前k大的數

  • 查看
  • 提交
  • 統計
  • 提問
總時間限制:
10000ms
單個測試點時間限制:
1000ms
內存限制:
65536kB
描述

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

輸入
第一行包含一個整數n,表示數組的大小。n < 100000。
第二行包含n個整數,表示數組的元素,整數之間以一個空格分開。每個整數的絕對值不超過100000000。
第三行包含一個整數k。k < n。
輸出
從大到小輸出前k大的數,每個數一行。
樣例輸入
10
4 5 6 9 8 7 1 2 3 0
5
樣例輸出
9
8
7
6
5
 1 #include<iostream>
 2 #include<cstdio>
 3
#include<cstring> 4 #include<string> 5 #include<algorithm> 6 #include<cmath> 7 using namespace std; 8 long long a[1000000]; 9 int k=0,t=0; 10 int qsort(int l,int r) 11 { 12 int i=l; 13 int j=r; 14 int mid=a[(l+r)/2]; 15 do 16 { 17 while(a[i]<mid)i++;
18 while(a[j]>mid)j--; 19 if(i<=j) 20 { 21 swap(a[i],a[j]); 22 i++; 23 j--; 24 } 25 }while(i<=j); 26 if(j>l)qsort(l,j); 27 if(i<r)qsort(i,r); 28 } 29 int main() 30 { 31 long long n,q; 32 cin>>n; 33
for(long long i=1;i<=n;i++) 34 { 35 cin>>a[i]; 36 }cin>>q; 37 qsort(1,n); 38 for(long long i=n;i>=n-q+1;i--) 39 { 40 cout<<a[i]<<endl; 41 } 42 return 0; 43 }

openjudge 7617:輸出前k大的數