Cod sursa(job #1419742)

Utilizator Alex1199Alex Bercea Alex1199 Data 16 aprilie 2015 12:52:52
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#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(long long int l,long long int r,long long int k)
{
    long long x = v[(l+r) / 2];
    long long 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 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;
}