Pagini recente » Cod sursa (job #980219) | Cod sursa (job #260886) | Cod sursa (job #1975185) | Cod sursa (job #1256090) | Cod sursa (job #586423)
Cod sursa(job #586423)
#include <stdio.h>
#include <ctime>
#include <cstdlib>
int n,v[3000005],k,i;
int caut(int x,int y,int k)
{
if (x==y) return 0;
int p=v[x+(rand()%(y-x+1))];
int i=x-1,j=y+1,aux,ok=0;
while (!ok)
{
do
{
i++;
}
while (v[i]<p);
do
{
j--;
}
while (v[j]>p);
if (i<j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else ok=1;
}
if (j-x+1>=k)
caut(x,i,k);
else caut(i+1,y,k-j+x-1);
return 0;
}
int main(void)
{
srand(time(NULL));
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&n,&k);
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
caut(1,n,k);
printf("%d\n",v[k]);
return 0;
}