Pagini recente » Cod sursa (job #3222437) | Cod sursa (job #2733913) | Cod sursa (job #420626) | Cod sursa (job #1553662) | Cod sursa (job #2544683)
#include <fstream>
#include <ctime>
#include <algorithm>
#include <cstdlib>
using namespace std;
ifstream cin ("sdo.in");
ofstream cout("sdo.out");
unsigned quickselect(int, int , int);
void citire();
unsigned n, v[4000004];
int main() {
citire();
return 0;
}
void citire()
{
int k;
cin >> n >> k ;
for( int i =0 ;i <n;i ++)
cin >>v[i];
srand(time(0));
cout <<quickselect(0 , n - 1, k);
}
unsigned quickselect(int l ,int r ,int k)
{
if(l == r)
return v[l];
unsigned pivot = v[rand() % (r - l + 1)+ l];
int i = l;
int j = r;
while(i<=j) {
while (v[i] < pivot)
i++;
while (v[j] > pivot)
j--;
if (i <= j) {
swap(v[i], v[j]);
i++;
j--;
}
}
if( k<= (j - l + 1))
return quickselect(l ,j ,k);
else
return quickselect(j + 1 , r ,k -(j - l + 1));
}