Cod sursa(job #1784080)

Utilizator teodoramusatoiuTeodora Musatoiu teodoramusatoiu Data 19 octombrie 2016 19:26:43
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
#include<cstdlib>
using namespace std;

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

int v[3000001],n,k;

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

int part(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[i],v[j++]);
    schimb(v[j],v[dr]);
    return j;
}

void qs(int st, int dr, int poz)
{
    if(st>=dr)
        return;
    int p=part(st,dr);
    if(p>poz)
        qs(st,p-1,poz);
    else
    if(p<poz)
        qs(p+1,dr,poz);
    else
        return;

}

int main()
{
    f>>n>>k;
    int i;
    for(i=1;i<=n;i++)
        f>>v[i];
    qs(1,n,k);
    g<<v[k];
    return 0;
}