Pagini recente » Cod sursa (job #3166403) | Cod sursa (job #827398) | Cod sursa (job #2846728) | Cod sursa (job #2916736) | Cod sursa (job #1744416)
#include<fstream>
#include<stdlib.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,v[3000005],i,j,k;
int pos(int st,int dr){
int i,j,val,aux;
val=v[st+(rand()%(dr-st+1))];
i=st-1;j=dr+1;
while(0<1){
do{
i++;
}while(v[i]<val);
do{
j--;
}while(v[j]>val);
if (i<j){
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else
return j;
}
}
int sord(int st,int dr,int poz){
int q,pivot;
if (st==dr) return v[st];
pivot=pos(st,dr);
q=pivot-st+1;
if (q>=poz) return sord(st,pivot,poz);
else
return sord(pivot+1,dr,poz-q);
}
int main(){
fin>>n>>k;
for (i=1;i<=n;i++)
fin>>v[i];
fin.close();
fout<<sord(1,n,k);
fout.close();
return 0;
}