Cod sursa(job #1255619)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 4 noiembrie 2014 23:29:10
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
//Roberto Deresu - FMI
//Re :)
#include<fstream>
#define nx 3000007
using namespace std;
int n,i,k,v[nx];

ifstream fin("sdo.in");
ofstream fout("sdo.out");

int quick(int l,int r)
{
    int p,i,j;

    p=v[(l+r)/2];
    i=l;
    j=r;

    while(1)
    {
        while(v[i]<p)i++;
        while(v[j]>p)j--;

        if(i<j) v[i]=v[i]^v[j]^(v[j]=v[i]),i++,j--;
        else return j;
    }
    return 0;
}

void cauta(int l, int r, int k)
{
    int m,nr;

    if(l==r) return;

    nr=quick(l,r);
    m=nr-l+1;

    if(m>=k) cauta(l,nr,k);
    else cauta(nr+1,r,k-m);
}

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

    cauta(1,n,k);

    fout<<v[k];

    return 0;
}