Pagini recente » Cod sursa (job #2947938) | Cod sursa (job #1137828) | Cod sursa (job #1199809) | Cod sursa (job #383358) | Cod sursa (job #373508)
Cod sursa(job #373508)
#include<fstream>
#include<time.h>
#include<cstdlib>
using namespace std;
int a[3000003];
int partition(int *a,int p,int r)
{ int i=p-1;
int j=r+1;
int x=a[(rand()%(r-p+1))+p];
while(1)
{do
{++i;}while(a[i]<x);
do
{--j;} while(a[j]>x);
if(i<j)
{int aux=a[i];a[i]=a[j];a[j]=aux;}
else return j;
}
return 0;
}
void quick(int *a,int p,int r,int k)
{if(p<r)
{int q=partition(a,p,r);
int temp=q-p+1;
if(temp<k) quick(a,q+1,r,k-temp);
else quick(a,p,q,k);
}
}
int main()
{int n,k;
srand(time(NULL));
ifstream in("sdo.in");
ofstream out("sdo.out");
in>>n>>k;
for(int i=1;i<=n;i++) in>>a[i];
quick(a,1,n,k);
out<<a[k];
return 0;}