Cod sursa(job #1636778)

Utilizator andreiudilaUdila Andrei andreiudila Data 7 martie 2016 12:10:31
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>

using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,k,a[3000001];
int i;
void nth (int l, int r)
{
    if(r-l+1<2)
    return ;

    int x=a[(l+r)/2];
    int i=l, j=r;

    while (i<j){

        while(a[i]<x)
            ++i;
        while(a[j]>x)
            --j;

        if(i<=j){

        swap(a[i], a[j]);
        ++i;
        --j;
        }

    }

    if (j>=k) nth(l,j);
    else nth(i,r);
}

int main()
{
    fin>>n>>k;
    for(i=1;i<=n;++i)
        fin>>a[i];

    nth(1,n);

    fout<<a[k];
    return 0;
}