Pagini recente » Cod sursa (job #1575214) | Cod sursa (job #415565) | Cod sursa (job #2532170) | Cod sursa (job #3198508) | Cod sursa (job #1509936)
#include <fstream>
#include <cstdlib>
#include <ctime>
#define NMAX 3000005
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[NMAX];
int nthElement(int st, int dr, int poz)
{
int pivot = v[st + rand() % (dr - st + 1)];
int i = st;
int j = dr;
do
{
while (v[i] < pivot && i < dr) ++i;
while (v[j] > pivot && j > st) --j;
if (i < j) swap(v[i], v[j]);
} while (i < j);
if (j - st + 1 == poz) return v[j];
if (j - st + 1 < poz) return nthElement(i + 1, dr, poz - i + st - 1);
return nthElement(st, j - 1, poz);
}
int main()
{
srand(time(NULL));
int n, k;
fin >> n >> k;
for (int i = 0; i < n; ++i)
fin >> v[i];
fout << nthElement(0, n - 1, k) << '\n';
return 0;
}