Cod sursa(job #2378124)

Utilizator alex12_roGuster Alexandru alex12_ro Data 11 martie 2019 18:16:13
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>

#include <fstream>

#include <cstdlib>



using namespace std;



ifstream fin("sdo.in");

ofstream fout("sdo.out");



int v[3000001];



int partitie(int v[], int st, int dr)

{

    int a = st;

    for(int i = st; i < dr; i++)

    {

        if(v[i] < v[dr])

        {

            swap(v[i], v[a++]);

        }

    }

    swap(v[a], v[dr]);

    return a;

}



void qs(int v[], int st, int dr, int k)

{

    if(st >= dr)

    {

        return;

    }

    int b = partitie(v, st, dr);

    if(k < b)

    {

        qs(v, st, b - 1, k);

    }

    else

    {

        qs(v, b + 1, dr, k);

    }

}



int main()

{

    int n, k, i;

    fin >> n >> k;

    for(i = 1; i <= n; i++)

        fin >> v[i];

    srand(time(0));

    for(int i = n; i > 0; i--)

    {

        int p = rand()%i;

        swap(v[i - 1], v[p]);

    }

    qs(v, 0, n, k);

        fout << v[k];

    return 0;

}