Cod sursa(job #375200)

Utilizator MciprianMMciprianM MciprianM Data 19 decembrie 2009 19:58:45
Problema Statistici de ordine Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream>
using namespace std;
#define MAXN 3000009
unsigned int a[MAXN], b[MAXN];
int main(){
	unsigned int n, k, i, rsh, frecv[256], j;
	unsigned int *p1, *p2,*aux;
	ifstream f("sdo.in");
	f>>n>>k;
	const unsigned int msk=255;
	for(i=0;i<n;i++)
		f>>a[i];
	f.close();
	p1=a;p2=b;
	for(j=0;j<4;j++){
		rsh=j*8;
		memset(frecv, 0, sizeof(frecv));
		for(i=0;i<n;i++)
			frecv[((p1[i]>>rsh)&msk)]++;
		for(i=1;i<256;i++)
			frecv[i] += frecv[i-1];
		for(i=0;i<n;i++)
			p2[--frecv[((p1[n-i-1]>>rsh)&msk)]]=p1[n-i-1];
		aux=p1;p1=p2;p2=aux;
	}
	ofstream g("sdo.out");
	g<<a[--k]<<'\n';
	g.close();
	return 0;
}