Pagini recente » Cod sursa (job #1128039) | Cod sursa (job #161466) | Cod sursa (job #892264) | Cod sursa (job #2686302) | Cod sursa (job #1011465)
#include <iostream>
#include <fstream>
#include <stdlib.h>
std::ifstream fin("sdo.in");
std::ofstream fout("sdo.out");
int n, p, position, a[3000001];
void change(int &a, int &b)
{
int aux = a;
a = b;
b = aux;
}
void poz(int in, int sf, int &k)
{
int random = rand() % (sf - in) + in;
change(a[random], a[sf]);
for(int i = in; i < sf; i++)
{
if(a[i] <= a[sf]) ///a[sf] - pivot
{
change(a[i], a[in]);
in++;
}
}
change(a[in], a[sf]);
k = in;
}
void QSort(int in, int sf)
{
int k;
if(in < sf)
{
poz(in, sf, k);
// if(k > p)
{
QSort(k+1, sf);
}
// else
// if(k < p)
{
QSort(in, k-1);
}
// else
// {
// position = k;
// return;
// }
}
}
void citire()
{
fin>>n>>p;
for(int i = 0; i < n; i++)
{
fin>>a[i];
}
}
void rezolvare()
{
QSort(0, n-1);
// for(int i = 0; i < n; i++)
// {
// std::cout<<a[i]<<' ';
// }
fout<<a[p - 1]<<'\n';
}
int main()
{
citire();
rezolvare();
return 0;
}