Pagini recente » Cod sursa (job #1621134) | Cod sursa (job #275867) | Cod sursa (job #2745029) | Cod sursa (job #835219) | Cod sursa (job #381682)
Cod sursa(job #381682)
using namespace std;
#include<fstream>
#include<cstdlib>
#include<ctime>
#define MAX_N 3000002
int A[MAX_N], N, K;
int part(int pi, int pf)
{
int i = pi-1, j = pf+1, x = A[pi + rand()%(pf-pi+1)];
while(1)
{
do { ++i; } while(A[i] < x);
do { --j; } while(x < A[j]);
if(i<j) swap(A[i],A[j]);
else return j;
}
}
void qsort(int pi, int pf, int k)
{
if(pi==pf) return;
int q = part(pi, pf);
int nr = q-pi+1;
if(nr >= k) qsort(pi, q, k);
else qsort(q+1,pf,k-nr);
}
int main()
{
ifstream f("sdo.in"); ofstream g("sdo.out");
srand(time(NULL));
f>>N>>K;
int i;
for(i=1;i<=N;++i) f>>A[i];
qsort(1,N,K);
g<<A[K]<<"\n";
return 0;
}