Pagini recente » Cod sursa (job #1889730) | Cod sursa (job #2747882) | Cod sursa (job #836602) | Cod sursa (job #896262) | Cod sursa (job #966009)
Cod sursa(job #966009)
//statistici de orinde, radix sort(10 ^ 9)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int Nmax = 3000009;
const int Limit = (1<<16) - 1;
int N; int K; int A[Nmax]; int B[Nmax];
void Read(){
fin >> N >> K;
for(int i = 1; i <= N; ++i) fin >> A[i];
}
void Rad(const int byte, int A[], int B[]){
int Count[Limit], Ind[Limit];
memset(Count, 0, sizeof(Count));
for(int i = 1; i <= N; ++i) ++Count[(A[i] >> byte) & Limit];
Ind[0] = 1;
for(int i = 1; i <= Limit; ++i) Ind[i] = Ind[i - 1] + Count[i - 1];
for(int i = 1; i <= N; ++i) B[ Ind[ (A[i] >> byte) & Limit ]++] = A[i];
}
void Solve(){
Rad(0, A, B);
Rad(16, B, A);
//Rad(16, A, B);
//Rad(24, B, A);
}
void Print(){
//for(int i = 1; i <= N; ++i) fout << A[i] <<" " ;
fout << A[K];
}
int main(){
Read (); Solve (); Print ();
return 0;
}