Pagini recente » Cod sursa (job #1272235) | Cod sursa (job #1273313) | Cod sursa (job #2865153) | Cod sursa (job #1500836) | Cod sursa (job #1372952)
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
#define NMAX 3000005
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,k,a[NMAX];
int quicksort(int st, int dr)
{
int i=0,j=1,piv=rand()%(dr-st+1)+st,aux;
aux=a[piv], a[piv]=a[st], a[st]=aux;
while (st<dr)
{
if (a[st]>a[dr])
{
aux=a[st], a[st]=a[dr], a[dr]=aux;
i=1-i, j=1-j;
}
st+=i, dr-=j;
}
return st;
}
int sdo(int st, int dr)
{
int mij=quicksort(st,dr);
if (mij==k)
return a[mij];
if (mij<k)
return sdo(mij+1,dr);
else
return sdo(st,mij-1);
}
int main()
{
int i;
srand(time(0));
fin>>n>>k;
for (i=1;i<=n;++i)
fin>>a[i];
fout<<sdo(1,n)<<"\n";
return 0;
}