Cod sursa(job #1184807)

Utilizator danalexandruDan Alexandru danalexandru Data 14 mai 2014 09:45:25
Problema Statistici de ordine Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;

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

int v[3000000];

int schimb(int &a,int &b)
{
    int aux;
    aux=a;
    a=b;
    b=aux;
}
int partitie(int st,int dr)
{
    int i,j;
    j=st;
    for(i=st;i<dr;i++)
        if(v[i]<v[dr])
            schimb(v[j++],v[i]);
    schimb(v[j],v[dr]);
    return j;
}

void qs2 (int st, int dr , int poz)
{
    if ( st >= dr )
        return ;
    int p = partitie(st , dr);
    if ( poz < p )
        qs2(st, p-1 , poz);
    if ( poz > p )
        qs2 ( p+1 , dr , poz);
}

int main()
{

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