Pagini recente » Cod sursa (job #1459798) | Cod sursa (job #1787724) | Cod sursa (job #2662913) | Cod sursa (job #1864790) | Cod sursa (job #2078065)
#include <stdio.h>
#include <string.h>
using namespace std;
FILE* fin;
FILE* fout;
int n, k;
unsigned int V[3000000];
unsigned int result[3000000];
unsigned int C[256];
unsigned int O[256];
void radixSort(unsigned int v[], int n, int byte)
{
for(int i = 0; i < n; ++i)
C[(v[i] & (0xFF << byte)) >> byte]++;
for(int i = 1; i < 256; ++i)
C[i] += C[i - 1];
for(int i = n - 1; i >= 0; --i)
{
result[C[(v[i] & (0xFF << byte)) >> byte] - 1] = v[i];
C[(v[i] & (0xFF << byte)) >> byte]--;
}
memcpy(v, result, sizeof(unsigned int) * n);
memset(C, 0, sizeof(unsigned int) * 256);
}
int main()
{
fin = fopen("sdo.in", "r");
fout = fopen("sdo.out", "w");
fscanf(fin, "%d %d", &n, &k);
for(int i = 0; i < n; ++i)
fscanf(fin, "%u", V + i);
for(int i = 0; i <= 24; i += 8)
radixSort(V, n, i);
fprintf(fout, "%d", V[k - 1]);
return 0;
}