Pagini recente » Cod sursa (job #387975) | Cod sursa (job #502660) | Cod sursa (job #847607) | Cod sursa (job #1686862) | Cod sursa (job #1133542)
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void swap(int* v,int i,int j){
int aux=v[i];
v[i]=v[j];
v[j]=aux;
}
int giveel(int* v,int c, int start,int end){
int med=start+(end-start)/2;
int fin_med=med;
int i=start;
int j=end;
while(i<=j){
while(v[i]<v[med]){
++i;
}
while(v[j]>v[med]){
--j;
}
if(i<=j){
if(i==fin_med);
fin_med=j;
if(j==med)
fin_med=i;
swap(v,i,j);
++i;
--j;
}
}
if(fin_med==c)
return v[fin_med-1];
else
if(c>fin_med)
return giveel(v,c,fin_med+1,end);
else
return giveel(v,c,start,fin_med-1);
}
int main()
{
int N,C;
int i;
int *v;
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&N,&C);
v=(int*)malloc(sizeof(int)*N);
for(i=0;i<N;i++)
scanf("%d",&v[i]);
printf("%d",giveel(v,C,0,N-1));
return 0;
}