题目
本题不能用快排,会超时,因为数据量大。若用快排将会是千万的复杂度,1s内过不去。本题采用哈希,将NlogN算法降低为N
代码
1 #include<iostream> 2 using namespace std; 3 #define OFFSET 500000 4 int h[1000001]; 5 int main(){ 6 int n,m; 7 while(scanf("%d%d",&n,&m) != EOF){ 8 for(int i = 0;i < n;i++){ 9 int x; 10 scanf("%d",&x); 11 h[x+OFFSET]++; 12 } 13 int k = 0; 14 for(int i = 0;i < 1000001;i++){ 15 if(h[i] > 0){ 16 k++; 17 if(k == m) printf("%d ",i - OFFSET); 18 } 19 } 20 } 21 return 0; 22 }