Pagini recente » Cod sursa (job #2830695) | Cod sursa (job #1390973) | Cod sursa (job #1986511) | Cod sursa (job #2809487) | Cod sursa (job #1207864)
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 m = rand() % (dr - st + 1) + st;
while(st < dr)
{
while(v[st] < v[m]) ++st;
swap(v[st], v[m]); m = st;
while(v[m] < v[dr]) --dr;
swap(v[dr], v[m]); m = dr;
}
return m;
}