Pagini recente » Cod sursa (job #1810314) | Cod sursa (job #2287227) | Cod sursa (job #2907734) | Cod sursa (job #956450) | Cod sursa (job #1883702)
#include <cstdio>
#include <algorithm>
#define NMAX 3000000+5
using namespace std;
int N,k,v[NMAX];
int part(int st,int dr)
{
int i,j,p;
p=v[(st+dr)/2];
i=st-1;
j=dr+1;
while(true)
{
do
{
++i;
}
while(v[i]<p);
do
{
--j;
}
while(v[j]>p);
if(i<j){swap(v[i],v[j]);}
else return j;
}
//for(int i=st;i<=dr;i++)
// if(v[i]<=p)swap(v[++j],v[i]);
return j;
}
int fmin(int st,int dr,int x)
{
int poz=part(st,dr);
if(poz==x)return v[poz];
else if(x<poz)return fmin(st,poz,x);
else if(x>poz) return fmin(poz,dr,x);
}
int main()
{
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d %d",&N,&k);
for(int i=1; i<=N; i++)
scanf("%d",&v[i]);
int ans=fmin(1,N,k);
printf("%d",ans);
return 0;
}