Pagini recente » Cod sursa (job #1126617) | Cod sursa (job #2882595) | Cod sursa (job #2457825) | Cod sursa (job #1784149) | Cod sursa (job #1019643)
#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;
}