Cod sursa(job #2063794)

Utilizator daniela12Sandu Daniela Teodora daniela12 Data 11 noiembrie 2017 14:51:50
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int v[3000400], 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];
}