Pagini recente » Cod sursa (job #2111663) | Cod sursa (job #290741) | Cod sursa (job #855412) | Cod sursa (job #707847) | Cod sursa (job #1821444)
#include<cstdio>
#include<cstdlib>
#include<ctime>
int v[3000001];
void swap(int &a,int &b){
int aux=a;
a=b;
b=aux;
}
int pivot(int st,int dr,int p){
int i=st,j=dr,val=v[p];
while(i<=j){
while(v[i]<val)
i++;
while(v[j]>val)
j--;
if(i<j){
swap(v[i],v[j]);
i++;
j--;
}else
return i;
}
}
void quicksort(int st,int dr,int k){
if(st==dr)
return;
int p=st+rand()%(dr-st+1);
int poz=pivot(st,dr,p);
if(k<poz)
quicksort(st,poz-1,k);
else if(k>poz)
quicksort(poz+1,dr,k);
}
int main(){
srand(time(0));
int n,k,i;
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]);
quicksort(1,n,k);
printf("%d",v[k]);
return 0;
}