Pagini recente » Cod sursa (job #641146) | Cod sursa (job #419593) | Cod sursa (job #3304887) | Cod sursa (job #999128) | Cod sursa (job #1661543)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,k;
freopen("sdo.in" , "r" ,stdin);
scanf("%d %d",&n,&k);
int *v = new int[n+2];
for(int i=1;i<=n;++i){
scanf("%d ",&v[i]);
}
int old_k = k;
int s=1,d=n;
int x,y,z;
int l,r;
srand(time(NULL));
while(true){
x= s + (rand()%(d-s+1));
l = s-1; r = d+1;
while(true){
do{
++l;
}while( v[l] < v[x] );
do{
--r;
}while( v[r] > v[x] );
if(l<r)
swap( v[l] , v[r] );
else break;
}
//if( s == d ) break;
int t = r - s + 1;
//if( t == k ) break;
if(t >= k){
d = r;
}else{
s = r+1;
k-=t;
}
if( s == d ) break;
}
freopen("sdo.out" , "w" ,stdout);
printf("%d",v[old_k]);
return 0;
}