Cod sursa(job #1784199)

Utilizator adystar00Bunea Andrei adystar00 Data 19 octombrie 2016 20:54:53
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int v[3000001],n,k;
int partitie(int st, int dr)
{
    int i,j,poz;
    poz=st+rand()%(dr-st+1);
    swap(v[poz],v[dr]);
    j=st;
    for(i=st; i<dr; i++)
        if(v[i]<v[dr])
            swap(v[i],v[j++]);
    swap(v[j],v[dr]);
    return j;
}

void quick_sort(int st, int dr, int k)
{
    int p;
    if(st>=dr)
        return;
    p=partitie(st,dr);
    if(p>k)
        quick_sort(st,p-1,k);
    else if(p<k)
        quick_sort(p+1,dr,k);
    else
        return;

}

int main()
{
    ifstream fin ("sdo.in");
    ofstream fout ("sdo.out");
    int i;
    fin>>n>>k;
    for(i=1; i<=n; i++)
        fin>>v[i];
    quick_sort(1,n,k);
    fout<<v[k];
    return 0;
}