Pagini recente » Cod sursa (job #2797241) | Cod sursa (job #1865765) | Cod sursa (job #1973893) | Cod sursa (job #417910) | Cod sursa (job #2596111)
#include <iostream>
#include <fstream>
#include <cstdlib>
const int MAXN = 3000000 + 5;
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int n,k,v[MAXN],aux[MAXN];
void afis(){
for(int i = 1; i <= n; i++)
cout<<v[i]<<" ";
cout<<endl;
}
int partitie(int l,int r){
int pivot = l + rand() % (r - l + 1);
int index = l,piv_index = -1;
for(int i = l; i <= r; i++){
if(v[i] < v[pivot]){
aux[index++] = v[i];
}
}
for(int i = l; i <= r; i++){
if(v[i] == v[pivot]){
if(piv_index == -1)
piv_index = index;
aux[index++] = v[i];
}
}
for(int i = l; i <= r; i++)
if(v[i] > v[pivot])
aux[index++] = v[i];
for(int i = l; i <= r; i++)
v[i] = aux[i];
return piv_index;
}
void quicksort(int l,int r){
if(l >= r)
return;
int piv = partitie(l,r);
if(k < piv)
quicksort(l,piv);
if(k > piv)
quicksort(piv + 1,r);
}
int main()
{
srand(time(0));
in>>n>>k;
for(int i = 1; i <= n; i++)
in>>v[i];
quicksort(1,n);
out<<v[k];
return 0;
}