Cod sursa(job #1060155)

Utilizator IliescuDanAndreiIliescu Dan Andrei IliescuDanAndrei Data 17 decembrie 2013 18:11:44
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream in("quick.in");
ofstream out("quick.out");
int v[3000000];

void change(int a, int b)
{
    int k=v[a];
    v[a]=v[b];
    v[b]=k;
}

int pozitie(int a, int b)
{
    int i, j, r;
    r=rand()*rand()%(b-a+1)+a;
    change(r, b);
    for(i=j=a;i<b;i++)
        if(v[i]<v[b])
            change(j++, i);
    change(j, b);
    return j;
}

void quicksort(int a, int b)
{
    if(a>=b) return;
    int p=pozitie(a, b);
    quicksort(a, p-1);
    quicksort(p+1, b);
}

int main()
{
    int n, i, k;
    in>>n>>k;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
    }
    quicksort(1, n);
    out<<v[k];
    return 0;
}