Pagini recente » Cod sursa (job #379240) | Cod sursa (job #1931169) | Cod sursa (job #2639263) | Cod sursa (job #1319533) | Cod sursa (job #1419741)
#include <stdio.h>
#include <algorithm>
long int n,k, v[3000001];
FILE *f=fopen("sto.in","r");
FILE *g=fopen("sto.out","w");
long long kth(int l,int r,int k)
{
long long x = v[(l+r) / 2];
int i=l,j=r;
while(i<=j)
{
while(v[i] < x) i++;
while(v[j] > x) j--;
if(i<=j)
{
std::swap(v[i],v[j]);
i++;
j--;
}
}
if(l<=k && k<=j)
return kth(l,j,k);
if( i<=k && k<=r)
return kth(i,r,k);
return v[k];
}
int main(){
long int i;
fscanf(f,"%ld%ld",&n,&k);
for(i=1;i<=n;i++){
fscanf(f,"%ld",&v[i]);
}
fprintf(g,"%lld\n",kth(1,n,k));
return 0;
}