Pagini recente » Cod sursa (job #2203045) | Cod sursa (job #1636557) | Cod sursa (job #2138239) | Cod sursa (job #2925314) | Cod sursa (job #3229942)
#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 = rand()%(dr+1)+st;
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;
}