Pagini recente » Cod sursa (job #257867) | Cod sursa (job #1854706) | Cod sursa (job #1682512) | Cod sursa (job #221401) | Cod sursa (job #1321326)
#include <fstream>
#include <ctime>
#include <cstdlib>
#define drand a+rand()%(b+1-a)
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int i , N, a[500001], j, EL;
int random(int a,int b){return drand;}
void qsort(int st, int dr, int elem){
int i, j, pivot,aux;
if (st > dr) return ;
i = st; j = dr;
pivot = a[random(st , dr)];
while(i <= j)
{
while(a[i] < pivot) i++;
while(a[j] > pivot) j--;
if (i<=j)
{
aux=a[i];a[i]=a[j];
a[j]=aux;
i++; j--;
}
}
if(st < dr){
if(j-st+1 >= elem)
return qsort(st, j, elem);
else
return qsort(j+1, dr,elem-j+st-1);
}
}
int main()
{
f >> N;
f >> EL;
for( i = 1 ; i <= N ; i++ ) f >> a[i];
qsort(1 , N, EL);
g << a[EL];
}