Cod sursa(job #1850818)

Utilizator teo.cons98Constantin Teodor-Claudiu teo.cons98 Data 18 ianuarie 2017 22:31:16
Problema Statistici de ordine Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstdlib>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");

unsigned long long n, k, v[3000001];
unsigned long long i, j, f;

void quickSort(unsigned long long st, unsigned long long dr)
{
    unsigned long long piv = rand() %  (dr - st + 1) + st;

    piv = v[piv];
    i = st;
    j = dr;

    do
    {
        while(v[i] < piv and i <= dr)
        {
            ++i;
        }
        while(v[j] > piv and j >= st)
        {
            --j;
        }
        if(i <= j)
        {
            f = v[i];
            v[i] = v[j];
            v[j] = f;
            i++;
            j--;
        }
    }while(i <= j);

    if(j == k) fout<<v[j]<<endl;
    else if(j > k) quickSort(st, j);
    else quickSort(i, dr);

}

void citire()
{
    fin>>n>>k;
    for(unsigned int i = 1; i <= n; ++i)
    {
        fin>>v[i];
    }
}

int main()
{
    citire();
    quickSort(1, n);
}