Cod sursa(job #1558411)

Utilizator 96andreiFMI Andrei Barbu 96andrei Data 29 decembrie 2015 01:09:18
Problema Statistici de ordine Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <stdlib.h>

using namespace std;

int v[3000001];
int n,k;

void qs(int left,int right)
{
    if(left==right)
        return;

    int piv;
    piv=v[rand() % (right-left) + left];
    int i,j;
    i=left;
    j=right;
    while(i <= j)
    {
        while(v[i] < piv)
            i++;
        while(v[j] > piv)
            j--;

        if(i <= j)
        {
            swap(v[i],v[j]);
            i++;
            j--;
        }
    }

    if(i < right)
        qs(i, right);
    if(left < j)
        qs(left, j);
}

int main()
{
    ifstream fin("sdo.in");
    ofstream fout("sdo.out");

    fin>>n>>k;
    for(int i=1; i<=n; i++)
        fin>>v[i];

    qs(1, n);

    fout<<v[k];

    fin.close();
    fout.close();

    return 0;
}