Pagini recente » Cod sursa (job #862457) | Cod sursa (job #1551545) | Cod sursa (job #2982714) | Cod sursa (job #2180084) | Cod sursa (job #429058)
Cod sursa(job #429058)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define Nmax 3000010
int v[Nmax],K,i,n;
void swap(int &a, int &b)
{
int aux=a; a=b; b=aux;
}
int pozitie(int i, int j)
{
int p= v [ i + rand()%(j-i+1) ] ;
while(1)
{
while( v[i]<p ) i++;
while( v[j]>p ) j--;
if(i<j) swap(v[i],v[j]);
else break;
}
return j;
}
void quick(int s, int d)
{
int p=pozitie(s,d);
if( p < K ) quick(p+1,d);
else
if(p > K ) quick(s,p-1);
}
int main()
{
srand(time(0));
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]);
quick(1,n);
printf("%d",v[K]);
return 0;
}