Pagini recente » Istoria paginii runda/dedicatie_speciala7 | Cod sursa (job #1037470) | Cod sursa (job #1733858) | Cod sursa (job #2574837) | Cod sursa (job #2183434)
#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){
if (st<dr){
int p=poz(st,dr);
sorteaza (st,p-1);
sorteaza (p+1,dr);
}
}
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);
fprintf (fout,"%d",v[k]);
return 0;
}