Pagini recente » Cod sursa (job #1778464) | Cod sursa (job #1021519) | Cod sursa (job #1606053) | Cod sursa (job #559892) | Cod sursa (job #1207876)
using namespace std;
#include <fstream>
#include <ctime>
#include <cstdlib>
ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int Nmax = 3000000;
int v[Nmax];
int divide(int, int) ;
int main()
{
srand(time(NULL));
int i, n, k, gata = 0, m, st, dr;
fin >> n >> k;
for(i = 0; i < n; ++i) fin >> v[i];
st = 0; dr = n-1;
while(!gata)
{
m = divide(st, dr);
if(m == k - 1) gata = 1;
else if(m > k - 1) dr = m - 1;
else st = m + 1;
}
fout << v[k - 1] << '\n';
return 0;
}
int divide(int st, int dr)
{
//int x = v[ rand() % (dr - st + 1) + st ];
int x = v[st];
while(st < dr)
{
while(st < dr && v[dr] >= x) --dr;
v[st] = v[dr];
while(st < dr && v[st] <= x) ++st;
v[dr] = v[st];
}
v[st] = x;
return st;
}