Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/petrica112 | Cod sursa (job #2544674)
#include <fstream>
//#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
unsigned n ,v[4000001];
unsigned quickselect(int l , int r ,int k)
{
if(l == r)
return v[l];
unsigned piv = v[rand() % (r - l + 1) + l];
int i = l;
int j = r;
while(i <=j)
{
while(v[i] < piv)
i++;
while(v[j] > piv)
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));
}
int main() {
int k;
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> v[i];
}
srand(time(0));
cout<< quickselect(0, n - 1, k)<<'\n';
// cout << v[k];
return 0;
}