Pagini recente » Cod sursa (job #2704732) | Cod sursa (job #2987914) | Cod sursa (job #3341) | Cod sursa (job #2410946) | Cod sursa (job #2279517)
#include <fstream>
#include <ctime>
#include <cstdlib>
#define nmax 3000005
using namespace std;
int v[nmax],k;
int pivot(int st, int dr)
{
srand(time(NULL));
int piv=st+(rand()%(dr-st+1));
swap(v[dr],v[piv]);
int i=st-1,j;
for (j=st;j<=dr-1;j++)
{
if (v[j]<=v[dr])
{
i++;
swap(v[i],v[j]);
}
}
swap(v[i+1],v[dr]);
return i+1;
}
int selKmin(int st, int dr)
{
int mid=pivot(st,dr);
if (mid==k)
return v[k];
if (k<mid)
return selKmin(st,mid-1);
if (mid<k)
return selKmin(mid+1,dr);
}
int main()
{
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,i;
fin>>n>>k;
for (i=1;i<=n;i++)
{
fin>>v[i];
}
fout<<selKmin(1,n)<<'\n';
fin.close();
fout.close();
return 0;
}