Pagini recente » Cod sursa (job #140242) | Cod sursa (job #3134130) | Cod sursa (job #3177638) | Cod sursa (job #856928) | Cod sursa (job #1263615)
#include <iostream>
#include <fstream>
#include <stdlib.h>
#define max 3000001
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int v[max], n, k;
int prt(int left, int right)
{
int i =left-1;
int j= right+1;
int p= v[(rand()% (right-left +1) +1)];
while(1)
{
do ++i; while (v[i]<p);
do --j; while (v[j]>p);
if (i<j)
v[i]=v[i]^v[j]^(v[j]=v[i]);
else return j;
}
return 0;
}
void sdo (int left, int right)
{
if(left==right)
return;
int t=prt(left,right);
if(t>=k)
sdo(left, t);
else sdo(t+1, right);
}
int main()
{
int i;
fin>>n>>k;
for( i=1; i<=n; ++i)
fin>>v[i];
srand(9242342);
sdo(1, n);
fout<<v[k]<<' ';
fin.close();
fout.close();
return 0;
}