Cod sursa(job #1184808)

Utilizator FeriCsiki Francisc Alexandru Feri Data 14 mai 2014 09:48:28
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

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

int v[3000001],poz;

inline void schimb(int &a,int &b)
{
    int aux;
    aux=a;
    a=b;
    b=aux;
}

int partitie(int st,int dr)
{
    int i,j;

    i = st + rand()%(dr - st + 1);
    schimb(v[i], v[dr]);

    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 qsort(int st,int dr)
{
    if(st>=dr)
        return;

    int p=partitie(st,dr);

    if(poz<p)
        qsort(st,p-1);

    if(poz>p)
        qsort(p+1,dr);
}

int main()
{
    int n,i;

    in>>n>>poz;

    for(i=1;i<=n;i++)
    {
        in>>v[i];
    }

    qsort(1,n);

   /* for(i=1;i<=n;i++)
    {
        out<<v[i]<<" ";
    }*/

    out<<v[poz];

    return 0;

}