Cod sursa(job #373461)

Utilizator victor.ionescuIonescu Victor Cristian victor.ionescu Data 13 decembrie 2009 20:54:49
Problema Statistici de ordine Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream fi("sdo.in");
ofstream fo("sdo.out");
int N,A[3000010],k;

void kth_elem(int p,int u){
	int start=p,end=u;
	int pivot=A[p+rand()%(u-p+1)];
	while (start<end){
		while (A[start]<pivot) ++start;
		while (A[end]>pivot) --end;
		if (start<end) swap(A[start],A[end]);
	}
	++start;--end;
	if (k<=end) kth_elem(p,end); 
	else if (k>=start) kth_elem(start,u);
}

int main(){
	srand(time(NULL));
	fi>>N>>k;
	for (int i=1;i<=N;++i) fi>>A[i];
	kth_elem(1,N);
	fo<<A[k];
	fi.close();fo.close();
	return 0;
}