Pagini recente » Cod sursa (job #2976176) | Cod sursa (job #423771) | Cod sursa (job #414630) | Cod sursa (job #658066) | Cod sursa (job #1661458)
#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;
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;
}
int t = r - s + 1;
//if( t == k ) break;
if(t >= k){
d = t;
}else{
s = t+1;
k-=t;
}
if( s == d ) break;
}
freopen("sdo.out" , "w" ,stdout);
printf("%d",v[old_k]);
return 0;
}