Pagini recente » Cod sursa (job #2717885) | Cod sursa (job #2546574) | Cod sursa (job #527205) | Cod sursa (job #195124) | Cod sursa (job #1033395)
#include<iostream>
#include<fstream>
#include<ctime>
using namespace std;
int x[3000001], k, n;
ifstream f ("sdo.in");
ofstream g ("sdo.out");
void interschimba (int &x, int &y)
{
int aux = x;
x = y;
y = aux;
}
void partitioneaza (int s, int d)
{
if (s < d)
{
int i = s, j = d, m = x[rand() % (d - s + 1) + s];
do
{
while (x[i] < m)
i++;
while (x[j] > m)
j--;
if (i < j)
{
interschimba(x[i], x[j]);
i++;
j--;
}
} while (i < j);
if (k < j)
partitioneaza(s, j);
else
partitioneaza(i, d);
}
}
int main ()
{
f >> n >> k;
for (int i = 1; i <= n; i++)
f >> x[i];
f.close();
partitioneaza(1, n);
g << x[k];
g.close();
return 0;
}