Pagini recente » Cod sursa (job #329897) | Cod sursa (job #1652314) | Cod sursa (job #2051674) | Cod sursa (job #1489683) | Cod sursa (job #551889)
Cod sursa(job #551889)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,k,a[3000001];
void read();
void sdo(int,int,int);
void write();
int main()
{
freopen ("sdo.in","r",stdin);
freopen ("sdo.out","w",stdout);
read();
sdo(1,n,k);
write();
return 0;
}
void read()
{
int i;
scanf("%d%d",&n,&k);
for (i=1;i<=n;++i)
scanf("%d",&a[i]);
}
void sdo(int in,int sf,int k)
{
int nr,i,j,x;
x=rand()%(sf-in+1)+in;
nr=a[x];
swap(a[x],a[sf]);
i=in-1;
for (j=in;j<sf;++j)
if (a[j]<=nr)
{
++i;
swap (a[i],a[j]);
}
swap (a[i+1],a[sf]);
nr=i+1;
if (nr==k) return;
else if (nr>k) sdo(in,nr-1,k);
else sdo(nr+1,sf,k);
}
void write()
{
printf("%d",a[k]);
}