Pagini recente » Cod sursa (job #725) | Cod sursa (job #415681) | Cod sursa (job #2750724) | Cod sursa (job #412613) | Cod sursa (job #3229943)
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int part(int v[], int st, int dr)
{
int random = st+(rand() % (dr-st + 1));
int aux = v[dr];
v[dr] = v[random];
v[random] = aux; ///randomise part
int pivot = v[dr];
int poz = st;
for (int i = st; i < dr; i++)
if (v[i] < pivot)
{
int aux = v[i];
v[i] = v[poz];
v[poz] = aux;
poz++;
}
v[dr] = v[poz];
v[poz] = pivot;
return poz;
}
void quickSort(int v[], int st, int dr, int k)
{
if (st < dr)
{
int poz = part(v, st, dr);
if (poz == k)
return;
else
{
quickSort(v, st, poz - 1, k);
quickSort(v, poz + 1, dr, k);
}
}
}
int v[3000001];
int main()
{
int n, k;
in >> n >> k;
for (int i = 1; i <= n; i++)
in >> v[i];
quickSort(v, 1, n, k);
out << v[k];
return 0;
}