Cod sursa(job #1018941)

Utilizator leontinLeontin leontin Data 30 octombrie 2013 10:17:01
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <stdlib.h>
using namespace std;


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


#define MAX_N 3000002

long n, k, vec[MAX_N];

void quck(long stanga, long dr)
{

    long i = stanga, j = dr;
    long aux;
    long pivot = vec[stanga + rand() % ( dr - stanga + 1 )];
    while (i <= j)
    {
        while (vec[i] < pivot)
            i++;
        while (vec[j] > pivot)
            j--;
        if (i <= j)
        {
            aux = vec[i];
            vec[i] = vec[j];
            vec[j] = aux;
            i++;
            j--;
        }
    }
    if (k<=j)
        quck(stanga,j);
    else if(k>=i) quck(i,dr);
}

int main()
{
    f>>n>>k;
     long i;
    for (int i=1; i<=n; i++)
        f>>vec[i];
  
    quck(1,n);
    g<<vec[k]<<"\n";
    f.close();
    g.close();

    return 0;
}