Pagini recente » Cod sursa (job #1449313) | Cod sursa (job #2631486) | Cod sursa (job #1856486) | Cod sursa (job #1725589) | Cod sursa (job #1011384)
#include <iostream>
#include <fstream>
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 i1 = 1, j1 = 0;
while(in < sf)
{
if(a[in] > a[sf])
{
change(a[in], a[sf]);
if(i1 == 1)
{
i1 = 0;
j1 = -1;
}
else
{
i1 = 1;
j1 = 0;
}
}
in += i1;
sf += j1;
}
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);
fout<<a[p - 1]<<'\n';
}
int main()
{
citire();
rezolvare();
return 0;
}