Cod sursa(job #385873)
#include<stdio.h>
#include<stdlib.h>
int a[3000005],k,n;
void qsort (int st,int dr)
{
int i=st,j=dr,mij=(st+dr)/2,aux;
int piv=a[mij];
do
{
while(a[i]<piv)
++i;
while(piv<a[j])
--j;
if(i<=j)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
++i;
--j;
}
}
while(i<=j);
if(mij==k)
{
printf("%d",a[k]);
exit (0);
}
if(k<mij)
qsort(st,j);
else
qsort(i,dr);
}
int main ()
{
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
int i;
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
qsort (1,n);
printf("%d",a[k]);
printf("\n");
for(i=1;i<=n;++i)
printf("%d ",a[i]);
return 0;
}