Pagini recente » Cod sursa (job #1819686) | Cod sursa (job #1592977) | Cod sursa (job #233432) | Cod sursa (job #1111891) | Cod sursa (job #3347382)
#include <cstdlib>
#include <ctime>
#include <fstream>
#define NMAX 3000
int quick_select(int *v, int n, int k)
{
int a, pivot;
int l, r, i, j;
l = 0;
r = n - 1;
--k;
while (l < r) {
pivot = v[l + (rand() % (r - l + 1))];
for (i = l, j = r; 1; ++i, --j) {
while (v[i] < pivot)
++i;
while (v[j] > pivot)
--j;
if (i >= j)
break;
a = v[i];
v[i] = v[j];
v[j] = a;
}
if (j < k)
l = j + 1;
else
r = j;
}
return v[k];
}
int main()
{
int n, k;
int v[NMAX];
std::ifstream fin("sdo.in");
std::ofstream fout("sdo.out");
srand(time(nullptr));
fin >> n >> k;
for (int i = 0; i < n; ++i)
fin >> v[i];
fout << quick_select(v, n, k) << '\n';
return 0;
}