Pagini recente » Cod sursa (job #477568) | Cod sursa (job #151544) | Cod sursa (job #248845) | Cod sursa (job #2268940) | Cod sursa (job #1281567)
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[500001],n,i,k;
int poz (int p , int u){
int i=p, j=u, ii=0, jj=-1 , aux;
int x = p+rand()%(u-p);
aux=v[x];v[x]=v[p];v[p]=aux;
while(i!=j){
if(v[i]>v[j]){
aux=v[i];v[i]=v[j];v[j]=aux;
aux=ii;
ii=-jj;
jj=-aux;
}
i+=ii; j+=jj;
}
return i;
}
void sorteaza(int p, int u,int k){
int m=poz(p,u);
if(m==k){
fout<<v[k];
return;
}
if(m>k){
sorteaza(p,m-1,k);
}
else{
sorteaza(m+1,u,k-m);
}
}
int main(){
fin>>n>>k;
srand(time(0));
for(i=1;i<=n;i++){
fin>>v[i];
}
sorteaza(1,n,k);
return 0;
}