Pagini recente » Cod sursa (job #1372102) | Cod sursa (job #554383) | Cod sursa (job #160173) | Cod sursa (job #1314950) | Cod sursa (job #1419972)
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <iostream>
#include <ctime>
long int a[3000000];
long int n, k;
FILE *f=fopen("sdo.in","r");
FILE *g=fopen("sdo.out","w");
int partition( int p, int r)
{
int pivot = a[r];
while ( p < r )
{
while ( a[p] < pivot )
p++;
while ( a[r] > pivot )
r--;
if ( a[p] == a[r] )
p++;
else if ( p < r )
{
int tmp = a[p];
a[p] = a[r];
a[r] = tmp;
}
}
return r;
}
long int Select(long int l,long int r, long int i)
{
if (l==r) return a[l+1];
long int q=partition(l,r);
k=q-l+1;
if(i==k) return a[q];
else if (i<k) return Select(l,q-1,i);
else return Select(q,r,i-k);
}
int main()
{
fscanf(f,"%ld%ld",&n,&k);
for(int i=0; i<n; i++)
{
fscanf(f,"%ld",&a[i]);
}
fprintf(g,"%ld",Select(0,n-1,k));
return 0;
}