Pagini recente » Cod sursa (job #425026) | Cod sursa (job #521118) | Cod sursa (job #301233) | Cod sursa (job #1995474) | Cod sursa (job #645517)
Cod sursa(job #645517)
#include<fstream>
#include<ctime>
#include <cstdlib>
using namespace std;
int a[3000005];
int caut(int u, int v, int k)
{
if (u==v) return 0;
int p=a[u+(rand()%(v-u+1))];
int i=u-1;
int j=v+1;
int aux,ok=0;
while (!ok)
{
do
{
i++;
}
while (a[i]<p);
do
{
j--;
}
while (a[j]>p);
if (i<j)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
else ok=1;
}
int t=j-u+1;
if (t>=k)
caut(u,j,k);
else caut(j+1,v,k-t);
return 0;
}
int main()
{
ifstream f("sdo.in");
ofstream g("sdo.out");
int k,i,n;
srand(time(NULL));
f>>n>>k;
for (i=1;i<=n;i++)
f>>a[i];
caut(1,n,k);
g<<a[k];
return 0;
}