Pagini recente » Cod sursa (job #766100) | Cod sursa (job #3208142) | Rating Frunzescu Serghei (Serghei17005) | Cod sursa (job #981625) | Cod sursa (job #1256988)
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#define NMAX 3000005
using namespace std;
ifstream f ("sdo.in");
ofstream g ("sdo.out");
unsigned long x[NMAX];
int part(unsigned long *v, int l, int r)
{
int piv = v[l + rand() % (r - l + 1)];
int i = l, j = r;
while (1)
{
while (v[i] < piv)
i++;
while (v[j] > piv)
j--;
if (i < j)
{
swap(v[i++], v[j--]);
}
else
return j;
}
return 0;
}
void statord(unsigned long *v, int l, int r, int k)
{
if (l == r)
return;
int poz = part(v, l, r);
if (poz > k)
statord(v, l, poz, k);
else
statord(v, poz + 1, r, k);
}
int main()
{
srand(26);
int n, k;
f >> n >> k;
for (int i = 1; i <= n; i++)
f >> x[i];
statord(x, 1, n, k);
g << x[k];
return 0;
}