Pagini recente » Cod sursa (job #2779609) | Cod sursa (job #1264955) | Cod sursa (job #1624622) | Cod sursa (job #3216221) | Cod sursa (job #2129742)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[1000001];
int partitie(int p,int r){
int pivot;
pivot = (rand()%(r - p + 1) + p);
swap(v[pivot],v[r]);
int q = r;
for(int i=p;i<q;++i){
if(v[i] > v[q]){
swap(v[i],v[q-1]);
swap(v[q],v[q-1]);
-- q;
}
}
return q;
}
int orderSelect(int p,int r,int k)
{
int q;
int aux;
q = partitie(p,r);
aux = q - p + 1;
if(aux == k)
return v[q];
else if(aux > k)
return orderSelect(p,q - 1,k);
else
return orderSelect(q + 1,r,k - aux);
}
int main()
{
int n,k,x,i;
fin >> n >> k;
for(i=1;i<=n;++i){
fin >> v[i];
}
fout << orderSelect(1,n,k);
return 0;
}