Cod sursa(job #1019643)

Utilizator hellol30FMI Macovei Daniel hellol30 Data 31 octombrie 2013 18:38:12
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<cstdio>
#include<cstdlib>
#define Nmax 500007
using namespace std;

int a[Nmax],n,k;
 
int piv(int s,int d)
{
	int i=s-1,j=d+1,p;
    p=a[s+rand()%(d-s+1)];
    while(true)
	{   while(a[++i]<p);
		while(a[--j]>p);
        if(i<j) a[i]=a[i]+a[j]-(a[j]=a[i]);
          else return j;
    }
    return 0;
}
void quick(int s,int d)
{
	if(s<d)
	{
		int m=piv(s,d);
        if(k<m) quick(s ,m);
          else quick(m+1 ,d);
		if(s==1 && d==n) printf("%d\n",a[k]);
    }
}
int main () 
{
	freopen("algsort.in","rt",stdin);
	freopen("algsort.out","wt",stdout);
	scanf("%d",&n); 
	scanf("%d",&k);
    for(register int i=1;i<=n;++i) scanf("%d",&a[i]);
    quick(1,n);
    return 0;
}