Cod sursa(job #650578)

Utilizator Alexandru13Dumitraiche Marius-Alexandru Alexandru13 Data 18 decembrie 2011 14:27:16
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int a[3000001];
void quicksort(int st,int dr,int k,int a[3000001])
{
	if(st==dr) return ;
	int i=st,j=dr,aux,p;
	p=i+rand()%(j-i);
	while(i<=j)
	{
		while(a[i]<a[p])++i;
		while(a[j]>a[p])--j;
		if(i<=j)
		{	aux=a[i];a[i]=a[j];a[j]=aux;++i;--j;}
	}
	if(p>=k) quicksort(st,p,k,a);
	else
		quicksort(p+1,dr,k+st-p-1,a);
}
int main()
{
	freopen("sdo.in","r",stdin);
	freopen("sdo.out","w",stdout);
	int n,k,i;
	scanf("%d %d", &n,&k);
	for(i=1;i<=n;++i)
		scanf("%d ", &a[i]);
	quicksort(1,n,k,a);
	printf("%d", a[k]);
	return 0;
}