Cod sursa(job #817193)

Utilizator crazzytudTudor Popa crazzytud Data 17 noiembrie 2012 13:37:04
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
using namespace std;

ifstream in("sdo.in");
ofstream out("sdo.out");
int poz;
int v[3000001];
void swap(int &a,int &b)
{
    int aux;
    aux=a;
    a=b;
    b=aux;
}
int partitie(int st,int dr)
{
    int i,j;
    for(i=j=st;i<dr;i++)
        if(v[i]<v[dr])
            swap(v[i],v[j++]);
    swap(v[j],v[dr]);
    return j;
}


void qs(int st, int dr)
{
    if(st>=dr)
        return;
    int p=partitie(st,dr);
    if(poz<p)   qs(st,p-1);
    if(poz>p)   qs(p+1,dr);
}
int main()
{
    int n,i;
    in>>n>>poz;

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

    qs(1,n);
    out<<v[poz];
    return 0;
}