Cod sursa(job #1315221)

Utilizator roberta9533Pavel Roberta roberta9533 Data 12 ianuarie 2015 16:56:04
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include<cstdlib>
using namespace std;
int i,j,y,p,x,n,v[3000001],k;
int quick(int v[],int l,int r,int k)
{
    i=l;j=r;p=v[l+rand()%(r-l+1)];
    while(i<=j)
    {
        while(v[i]<p) i++;
        while(v[j]>p) j--;
        if(i<=j)
        {
            x=v[i];
            v[i]=v[j];
            v[j]=x;
            i++;
            j--;
        }
    }
    y=j-l+1;
    if(l<r)
    {if(y>=k) return quick(v,l,j,k);
    else return quick(v,j+1,r,k-y);}
}

int main()
{
    cin>>n>>k;
    for(i=1;i<=n;i++)
        cin>>v[i];
    quick(v,1,n,k);
    cout<<v[k];
    return 0;
}