Pagini recente » Cod sursa (job #315958) | Cod sursa (job #980142) | Cod sursa (job #2038256) | Cod sursa (job #2551218) | Cod sursa (job #2183451)
#include <cstdio>
#include <stdlib.h>
#include <ctime>
#include <iostream>
using namespace std;
int v[3000001];
int poz (int st,int dr){
int ds=0,dd=-1,aux;
while (st!=dr){
if (v[st]>v[dr]){
aux=v[st];
v[st]=v[dr];
v[dr]=aux;
aux=ds;
ds=-dd;
dd=-aux;
}
st+=ds;
dr+=dd;
}
return st;
}
void sorteaza (int st,int dr,int k){
if (st<dr){
int p=poz(st,dr);
if (k<=p-1)
sorteaza (st,p-1,k);
if (k>=p+1)
sorteaza (p+1,dr,k);
}
}
int main()
{
FILE *fin=fopen ("sdo.in","r");
FILE *fout=fopen ("sdo.out","w");
int n,k,i,p;
fscanf (fin,"%d%d",&n,&k);
for (i=1;i<=n;i++)
fscanf (fin,"%d",&v[i]);
srand (time(0));
for (i=n;i>=2;i--){
p=1+((long long)rand()*rand())%(i-1);
swap(v[i],v[p]);
}
sorteaza (1,n,k);
fprintf (fout,"%d",v[k]);
return 0;
}