Cod sursa(job #651928)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 22 decembrie 2011 14:16:23
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>

#define file_in "sdo.in"
#define file_out "sdo.out"

int i,N,K,V[3010001];

void quicksort(int left, int right, int K){
	
	int i=left;
	int j=right;
	int k=right-left+1;
	int middle;
	middle=V[(i+j)/2];
	
	do{
		while(middle>V[i] && i<=N) i++;
		while(middle<V[j] && j>=1) j--;
		if (i<=j){
			int aux=V[i];
			V[i]=V[j];
			V[j]=aux;
			i++;
			j--;
		}
	}
	while(i<=j);
	
	if (left<j && j-left+1>=K)
		quicksort(left,j,K);
	if (i<right && j-left+1<K)
		quicksort(i,right,K-(j-left+1));
}

int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &N, &K);
	for (i=1;i<=N;++i)
		 scanf("%d", &V[i]);
	
	quicksort(1,N,K);
	
	printf("%d\n", V[K]);
	
	return 0;
	
}