Pagini recente » Cod sursa (job #1978971) | Cod sursa (job #1757386) | Cod sursa (job #1396279) | Cod sursa (job #3122428) | Cod sursa (job #2275050)
#include <iostream>
#include <fstream>
#include <time.h>
#include <stdlib.h>
using namespace std;
#define N 3003000
int v[N],i,n,k,ans;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int FindElement(int k,int l,int r)
{
int poz = l + rand() % (r - l),it = l;
swap(v[poz],v[r-1]);
poz = r-1;
while (it < poz)
if(v[it] > v[poz])
{
swap(v[it],v[poz - 1]);
swap(v[poz],v[poz - 1]);
--poz;
}
else
++it;
if(poz > k)
return FindElement(k,l,poz);
if(poz < k)
return FindElement(k,poz,r);
return v[poz];
}
int main()
{
srand(time(NULL));
fin >> n >> k;
for (i = 0;i < n; ++i)
fin >> v[i];
ans = FindElement(k - 1,0,n);
fout << ans;
return 0;
}