Pagini recente » Cod sursa (job #1869419) | Cod sursa (job #1908864) | Cod sursa (job #2923523) | Cod sursa (job #287441) | Cod sursa (job #2505636)
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int VAL=3000005;
int N, K, i, j;
int v[VAL];
int Partition(int be, int en)
{
int pivot=be+(rand()%(en-be+1));
int i=be, P=v[pivot];
swap(v[pivot], v[en]);
for (int j=be; j<=en; j++)
{
if (v[j]<=P)
{
swap(v[i], v[j]);
i++;
}
}
return i-1;
}
void Order(int be, int en)
{
int pos=Partition(be, en);
if (K==pos)
return;
if (K<pos)
Order(be, pos-1);
else
Order(pos+1, en);
}
int main()
{
fin >> N >> K;
for (i=1; i<=N; i++)
fin >> v[i];
Order(1, N);
fout << v[K] << '\n';
fin.close();
fout.close();
return 0;
}