Pagini recente » Cod sursa (job #1218729) | Cod sursa (job #15167) | Cod sursa (job #2727541) | Cod sursa (job #1811452) | Cod sursa (job #1257493)
#include <iostream> // del
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define MX 1001000
int a[MX], n,k,i;
ifstream f1("nth.in");
int nth(int st, int dr, int k)
{
if (st>=dr) return a[st];
int piv=st+ rand()%(dr-st+1);
int v= a[piv], i=st, j=dr;
while (i<=j )
{ while (a[i]<v && i<dr ) i++;
while (a[j]>v && j>st) j--;
if (i<=j)
{ swap(a[i],a[j] );
i++; j--;
}
}
if (k<=(j-st+1) && j>=st )
return nth(st,j,k);
if (j+1<=dr )
return nth(j+1,dr,k-(i-st));
}
int main()
{
f1>>n>>k;
for (i=1;i<=n;i++)
f1>>a[i];
srand(time(NULL));
cout<<nth(1,n,k);
return 0;
}