Pagini recente » Cod sursa (job #1132843) | Cod sursa (job #435020) | Borderou de evaluare (job #103662) | Cod sursa (job #114932) | Cod sursa (job #1308569)
#include <cstdio>
using namespace std;
unsigned long a[3000000];
int n,k,p;
void poz (int li,int ls,int &p,unsigned long a[3000000])
{
int i=li,j=ls,c,i1=0,j1=-1;
while (i<j)
{
if (a[i]>a[j])
{
c=a[j]; a[j]=a[i]; a[i]=c;
c=i1; i1=-j1; j1=-c;
}
i=i+i1;
j=j+j1;
}
p=i;
}
void quick (int li,int ls)
{
if(li<ls)
{
poz(li,ls,p,a);
if(p>k) quick(li,p-1);
else if(p<k) {quick(li,p-1);
quick(p+1,ls);}
}
}
int main()
{ unsigned int i;
FILE *f,*g;
f=fopen("sdo.in","r");
g=fopen("sdo.out","w");
fscanf(f,"%d%d",&n,&k);
for (i=1;i<=n;i++) fscanf(f,"%d",&a[i]);
//fprintf(g,"%d",divide(1,n,k));
//ifstream f("sdo.in");
//ofstream g("sdo.out");
//int i;
//f>>n>>k;
//for(i=1;i<=n;i++)
// f>>a[i];
quick(1,n);
//nth_element(a+1, a+k, a+n+1);
fprintf(g,"%d",a[k]);
// g<<a[k];
fclose(f);
fclose(g);
return 0;
}