Cod sursa(job #3229942)

Utilizator P4ulCCuntan Paul P4ulC Data 18 mai 2024 12:37:00
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
using namespace std;

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

int part(int v[], int st, int dr)
{
    int random = rand()%(dr+1)+st;
    int aux = v[dr];
    v[dr] = v[random];
    v[random] = aux; ///randomise part

    int pivot = v[dr];
    int poz = st;
    for (int i = st; i < dr; i++)
        if (v[i] < pivot)
        {
            int aux = v[i];
            v[i] = v[poz];
            v[poz] = aux;
            poz++;
        }
    v[dr] = v[poz];
    v[poz] = pivot;
    return poz;
}

void quickSort(int v[], int st, int dr,int k)
{
    if (st < dr)
    {
        int poz = part(v,st,dr);
        if (poz == k)
            return;
        else
        {
            quickSort(v, st, poz - 1,k);
            quickSort(v, poz + 1, dr,k);
        }
    }
}

int v[3000001];
int main()
{
    int n,k;
    in >> n>>k;
    for (int i = 1; i <= n; i++)
        in >> v[i];
    quickSort(v,1,n,k);
    out << v[k];
    return 0;
}