Pagini recente » Cod sursa (job #3190017) | Cod sursa (job #1422382) | Cod sursa (job #3278641) | Cod sursa (job #727188) | Cod sursa (job #1863638)
#include <fstream>
#include <algorithm>
#include <cstdlib>
using namespace std;
int n,sct,a[3000005],b[3000005],c[3000005],vfb,vfc;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
void read()
{
fin>>n>>sct;
for(int i=0;i<n;i++)
fin>>a[i];
}
int part(int a[],int p,int q,int r)
{
swap(a[r],a[q-1]);
r=q-1;
int i=p-1,x=a[r];
for(int j=p;j<q-1;j++)
if(a[j]<=x)
{
i++;
swap(a[i],a[j]);
}
swap(a[i+1],a[r]);
return i+1;
}
int select(int a[],int p,int q,int k)
{
int r=rand()%(q-p)+p;
r=part(a,p,q,r);
int k1=r;
if(k==k1)
return a[k];
else
if(k<k1)
return select(a,p,k1,k);
else
return select(a,k1+1,q,k);
}
int main()
{
read();
//fout<<part(a,0,n,a[0])<<"\n";
fout<<select(a,0,n,sct-1);
// fout<<nth_element()
return 0;
}