Pagini recente » Cod sursa (job #844740) | Cod sursa (job #1236718) | Cod sursa (job #1777981) | Cod sursa (job #221657) | Cod sursa (job #1419944)
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <iostream>
#include <ctime>
int a[3000000];
FILE *f=fopen("sdo.in","r");
FILE *g=fopen("sdo.out","w");
int Select(int A[],int k,int l,int r)
{
int i, j, m, s;
i=l;
j=r;
if(l==r) return A[r-1];
else
{
s=l+rand()%(r-l+1)-1;
m=a[s];
while(i<j)
{
while(a[i]<m)i++;
while(a[j]>m)j--;
if(i<j)
{
std::swap(a[i],a[j]);
i++;
j--;
}
}
if(k < j) return Select(A,k,l,j);
else return Select(A,k,i,r);
}
}
int main()
{
long int n, k;
fscanf(f,"%ld%ld",&n,&k);
for(int i=0; i<n; i++)
{
fscanf(f,"%d",&a[i]);
}
fprintf(g,"%d",Select(a,k-1,0,n-1));
return 0;
}