Pagini recente » Cod sursa (job #2801550) | Cod sursa (job #2778169) | Cod sursa (job #1646709) | Cod sursa (job #882362) | Cod sursa (job #1876449)
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define Nmax 3000000
using namespace std;
ofstream g("sdo.out");
int n,k,v[Nmax];
int _qsort(int st,int dr,int x)
{
x = dr;
swap(v[x],v[dr]);
int a = st,b = dr-1;
while (a<=b)
{
if (v[a]>x && v[b]<=x)
{
swap(v[a],v[b]);
b--;
a++;
}
else
{
if(v[a]<=x)
a++;
if (v[b]>x)
b--;
}
}
swap(v[st],v[x]);
return st;
}
int ctbqs(int st,int dr,int poz)
{
int x = rand()%(dr+1-st)+st;
int mid = _qsort(st,dr,x);
if (poz==mid)
return v[mid];
if (poz<mid)
return ctbqs(st,mid-1,poz);
else
return ctbqs(mid+1,dr,poz);
}
int main()
{
srand(time(NULL));
freopen("sdo.in","r",stdin);
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++)
scanf("%d",&v[i]);
g<<ctbqs(1,n,k);
return 0;
}