Pagini recente » Cod sursa (job #1250057) | Cod sursa (job #1255299)
#include <cstdio>
using namespace std;
int v[3000000],n,k,gasit;
void dvd(int st,int dr,int &m)
{
int i=st,j=dr,pi=0,pj=1;
while(i<j)
{
if(v[i]>v[j])
{
v[i]=v[i]^v[j]^(v[j]=v[i]);
pi=pi^pj^(pj=pi);
}
i+=pi;
j-=pj;
}
m=i;
}
void quick(int st,int dr)
{
int m;
if((st<dr)&&(!gasit))
{
dvd(st,dr,m);
if(m>k)
quick(st,m-1);
else
if(m<k)
quick(m+1,dr);
else
gasit=v[m];
}
else
if(st==k)
gasit=v[st];
}
int main()
{
FILE *f,*g;
int i,x;
f=fopen("sdo.in","r");
fscanf(f,"%d %d",&n,&k);
for(i=1; i<=n; i++)
fscanf(f,"%d", &v[i]);
fclose(f);
gasit=0;
quick(1,n);
g=fopen("sdo.out","w");
fprintf(g,"%d",gasit);
fclose(g);
return 0;
}