Pagini recente » Cod sursa (job #359191) | Cod sursa (job #2905725) | Cod sursa (job #752481) | Cod sursa (job #1184820) | Cod sursa (job #2294141)
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
long n;
long a[3000001];
long partitie_pivot(long left, long right){
long i = left, j = right;
long pivot = rand()%(right - left + 1) + left;
pivot = a[pivot];
while(i < j){
while(a[i] < pivot){
i++;
}
while(pivot < a[j]){
j--;
}
if(i<j){
swap(a[i], a[j]);
}
}
}
void quicksort(long left, long right, long k){
if(left == right) return;
long x = partitie_pivot(left, right);
long y = x - left + 1;
if( y >= k)
quicksort(left, x, k);
else
quicksort(x + 1, right, k - y);
}
int main()
{
long k;
f>>n>>k;
srand (time(NULL));
for(long i = 1; i <= n ; i++)
f>>a[i];
quicksort(1, n, k);
g<<a[k];
return 0;
}