Pagini recente » Cod sursa (job #1369721) | Cod sursa (job #1334158) | Cod sursa (job #1238167) | Cod sursa (job #3259554) | Cod sursa (job #586422)
Cod sursa(job #586422)
#include <stdio.h>
#include <ctime>
#include <cstdlib>
int n,v[3000000],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;
while (1)
{
i++;
while (v[i]<p) i++;
j--;
while (v[j]>p) j--;
if (i<j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else break;
}
if (i+x-1>=k)
caut(x,i,k);
else caut(i+1,y,k-i-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;
}