Cod sursa(job #1568931)

Utilizator robert.iacobIacob Robert robert.iacob Data 14 ianuarie 2016 20:46:53
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <cstring>

using namespace std;

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

int v[3000010],i,n,k;

int partition (int l,int r)
{
    int z=l;
    swap (v[(l+r)/2],v[r]);
    for (int u=l; u<r; u++)
        if (v[u]<v[r])
        {
            swap (v[u],v[z]);
            z++;
        }
    swap (v[z],v[r]);
    return z;
}

void qsort (int x,int y)
{
     if (x<=y)
     {
        int np=partition (x,y);
        if (np==k)
        {
            fout<<v[np]<<"\n";
            exit(0);
        }
        if (np<k) qsort (np+1,y);
        else qsort (x,np-1);
     }
}

int main ()
{
    fin>>n>>k;
    for (i=1; i<=n; i++)
        fin>>v[i];
    qsort (1,n);
    fin.close ();
    fout.close ();
    return 0;
}