Cod sursa(job #371166)

Utilizator Mishu91Andrei Misarca Mishu91 Data 3 decembrie 2009 23:03:41
Problema Statistici de ordine Scor Ascuns
Compilator cpp Status done
Runda Marime 0.64 kb
#include <fstream>

using namespace std;

#define MAX_N 3000005

ifstream fin ("sdo.in");
ofstream fout ("sdo.out");

int A[MAX_N], N, K, B[MAX_N];

inline void rad(int N, int byte, int A[], int B[])
{
	int cnt[256], ind[256],i;
	memset(cnt, 0, sizeof(cnt));
	for(i=1; i <= N; ++i) ++cnt[(A[i]>>byte)&255];
	ind[0]=1;
	for(i=1; i < 256; ++i) ind[i]=ind[i-1]+cnt[i-1];
	for(i=1; i <= N; ++i) B[ind[(A[i]>>byte)&255]++]=A[i];
}

inline void radix(int A[], int N)
{
	rad(N, 0, A, B);
	rad(N, 8, B, A);
	rad(N, 16, A, B);
	rad(N, 24, B, A);
}

int main()
{
	fin >> N >> K;

	for(int i = 1; i <= N; ++i)
		fin >> A[i];

	radix(A, N);

	fout << A[K] << "\n";
}