Pagini recente » Cod sursa (job #3247412) | Cod sursa (job #1977907) | Cod sursa (job #2696128) | Cod sursa (job #60611) | Cod sursa (job #1184812)
#include<stdio.h>
#include<stdlib.h>
FILE *in,*out;
int v[3000001];
void schimb(int &a,int &b)
{
int aux;
aux=a;
a=b;
b=aux;
}
int part(int st,int dr)
{
int i,j;
i=st+rand()%(dr-st+1);
schimb(v[i],v[dr]);
j=st;
for(i=st;i<dr;i++)
{
if(v[i]<v[dr])
schimb(v[j++],v[i]);
}
schimb(v[j],v[dr]);
return j;
}
void qs2(int st,int dr,int poz)
{
if(st>=dr)
return;
int p=part(st,dr);
if(poz<p)
qs2(st,p-1,poz);
if(poz>p)
qs2(p+1,dr,poz);
}
int main()
{
in=fopen("sdo.in","r");
out=fopen("sdo.out","w");
int n,i,k;
fscanf(in,"%d%d",&n,&k);
for(i=1;i<=n;i++)
{
fscanf(in,"%d",&v[i]);
}
qs2(1,n,k);
fprintf(out,"%d",v[k]);
return 0;
}