Cod sursa(job #2063763)

Utilizator daniela12Sandu Daniela Teodora daniela12 Data 11 noiembrie 2017 14:22:22
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int v[500400], n,k;
void citire()
{
    int i;
    f>>n>>k;
    for(i=1;i<=n;++i)
        f>>v[i];
    f.close();
}
int hoare( int p, int r)
{
    int pivot = v[p+(rand()%(r-p+1)+rand()%(r-p+1)+rand()%(r-p+1))/3];
    int i = p - 1, j = r + 1;
    while (true)
    {
        do
        {
            i++;
        } while (v[i] < pivot);
        do
        {
            j--;
        } while (v[j] > pivot);
        if (i >= j)
            return j;

        swap(v[i], v[j]);
    }
}

void quickSort( int p, int r)
{
    if (p < r)
    {
        int q = hoare(p, r);
        if(k==q)
            return;
        else    if(k<q)
                    quickSort(p, q);
                else    if(k>q)
                            quickSort(q + 1, r);

    }
}
int main()
{
    citire();
    quickSort(1, n);
    g<<v[k];
}