Pagini recente » Cod sursa (job #1956685) | Cod sursa (job #1664460) | Cod sursa (job #69510) | Cod sursa (job #1276059) | Cod sursa (job #1314713)
#include <stdio.h>
#include <cstdlib>
#include <algorithm>
using namespace std;
int v[3000003];
int kth(int st, int dr, int k)
{
if (st==dr)return v[st];
int poz=st+rand()%(dr-st+1), pivot=v[poz],i=st,j=dr;
while(i<=j)
{
while(v[i]<pivot)i++;
while(v[j]>pivot)j--;
if(i<=j)
swap(v[i++],v[j--]);
}
if(j-st+1>=k)
return kth(st,j,k);
else
return kth(j+1,dr,k-j+st-1);
}
int main()
{
FILE *f,*g;
int i,k,n;
f=fopen("sdo.in","r");
fscanf(f,"%d %d",&n,&k);
for(i=1; i<=n; i++)
fscanf(f,"%d", &v[i]);
fclose(f);
g=fopen("sdo.out","w");
fprintf(g,"%d",kth(1,n,k));
fclose(g);
return 0;
}