Pagini recente » Cod sursa (job #1593711) | Cod sursa (job #322324) | Cod sursa (job #16337) | Cod sursa (job #1855475) | Cod sursa (job #645513)
Cod sursa(job #645513)
#include<fstream.h>
#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 fin("sdo.in");
ofstream fout("sdo.out");
int k,i,n;
srand(time(NULL));
fin>>n>>k;
for (i=1;i<=n;i++)
fin>>a[i];
caut(1,n,k);
fout<<a[k];
return 0;
}