Pagini recente » Cod sursa (job #2513876) | Cod sursa (job #1340755) | Cod sursa (job #447212) | Cod sursa (job #487666) | Cod sursa (job #473137)
Cod sursa(job #473137)
#include<stdio.h>
#include<stdlib.h>
#include<ctime>
#define NMAX 3000003
int n,k,i,l,r,m,p,d;
int M[NMAX];
int qsort(int l,int r) {
d=0;
p=l+rand()%(r-l+1);
M[l]^=M[p];
M[p]^=M[l];
M[l]^=M[p];
while(l<r) {
if(M[l]>M[r]) {
M[l]^=M[r];
M[r]^=M[l];
M[l]^=M[r];
d=1-d;
}
if(d)
do l++; while(M[l]<M[r]);
else
do r--; while(M[l]<M[r]);
}
return l;
}
int main() {
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&n,&k);
--k;
for(i=0;i<n;i++) scanf("%d",M+i);
l=0;
r=n-1;
srand(time(NULL));
do {
m=qsort(l,r);
if(m<k) l=m+1;
else r=m-1;
} while(m!=k);
printf("%d\n",M[m]);
return 0;
}