Pagini recente » Cod sursa (job #1402729) | Cod sursa (job #575484) | Cod sursa (job #1139377) | Cod sursa (job #1618460) | Cod sursa (job #2061174)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define dmx 3000000
int v[dmx];
int prt(int lo, int hi)
{
int i,j,x,aux;
x=v[lo];
i=lo-1;
j=hi+1;
while (true)
{
do
{
i++;
}
while(v[i] < x);
do
{
j--;
}
while(v[j] > x);
if (i < j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else
return j;
}
}
void qselect(int lo, int hi, int k)
{
int p;
if (lo == hi)
return;
p=prt(lo,hi);
if (k <= p)
qselect(lo,p,k);
else
qselect(p+1,hi,k-p+1);
}
int main()
{
FILE *f;
int n,k,i;
f=fopen("sdo.in","r");
fscanf(f,"%d%d",&n,&k);
for (i=0; i<n; i++)
fscanf(f,"%d",&v[i]);
fclose(f);
srand(time(NULL));
qselect(0,n-1,k-1);
f=fopen("sdo.out","w");
fprintf(f,"%d",v[k-1]);
fclose(f);
}