Pagini recente » Cod sursa (job #2797987) | Cod sursa (job #1276110) | Cod sursa (job #289942) | Cod sursa (job #398980) | Cod sursa (job #1011446)
#include <iostream>
#include <fstream>
std::ifstream fin("sdo.in");
std::ofstream fout("sdo.out");
struct nod
{
int val = 0;
nod *st, *dr;
};
nod *varf = new nod;
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-1)
// {
//// QSort(in, k-1);
// QSort(k+1, sf);
// }
// else
// if(k < p-1)
// {
// QSort(in, k-1);
// }
//// else
//// {
//// position = k;
//// return;
//// }
// }
//}
void addInTree(nod *cur, int val)
{
if(cur->val != 0)
{
if(cur->val > val)
{
addInTree(cur->st, val);
}
else
{
addInTree(cur->dr, val);
}
}
else
{
cur->val = val;
cur->st = new nod;
cur->dr = new nod;
}
}
void citire()
{
fin>>n>>p;
fin>>a[0];
varf->val = a[0];
varf->st = new nod;
varf->dr = new nod;
for(int i = 1; i < n; i++)
{
fin>>a[i];
addInTree(varf, a[i]);
}
}
bool done = false;
void parsing(nod *cur, int &k)
{
if(cur->val != 0 && !done)/// && k < p)
{
parsing(cur->st, k);
if(k == p)
{
fout<<cur->val<<'\n';
k++;
done = true;
return;
}
else
if(done)
{
return;
}
// std::cout<<k<<' '<<p<<"; "<<cur->val<<'\n';
k++;
if(!done)
{
parsing(cur->dr, k);
// k++;
}
}
// else
// if(k == p)
{
// std::cout<<cur->val<<' ';
// k++;
}
}
void rezolvare()
{
int u = 1;
parsing(varf, u);
// QSort(0, n-1);
// for(int i = 0; i < n; i++)
// {
// std::cout<<a[i]<<' ';
// }
// std::cout<<'\n'<<a[p - 1]<<'\n';
}
int main()
{
citire();
rezolvare();
return 0;
}