Pagini recente » Cod sursa (job #1319800) | Cod sursa (job #1875579) | Cod sursa (job #2359815) | Cod sursa (job #1160605) | Cod sursa (job #2612453)
#include<iostream>
#include<fstream>
using namespace std;
#define Maxim 3000005
int v[Maxim];
int partitii(int v[Maxim], int li, int ls)
{
int i = li-1;
int j = ls+1;
int pivot= v[li + (rand()%(ls-li+1))];
while(1)
{
do
{
++i;
} while(v[i] < pivot);
do
{
--j;
} while(pivot< v[j]);
if(i < j)
swap(v[i], v[j]);
else
return j;
}
return 0;
}
void quickselect(int v[Maxim], int li, int ls, int k)
{
if(li == ls)
return;
int q = partitii(v, li, ls);
int t = q-li+1;
if(t >= k)
quickselect(v, li, q, k);
else
quickselect(v, q+1, ls, k-t);
}
int main(){
ifstream f("sdo.in");
ofstream f1("sdo.out");
int n,k;
f>>n>>k;
for (int i=1;i<=n;i++)
f>>v[i];
quickselect(v,1,n,k);
f1<<v[k];
}