Cod sursa(job #1935142)

Utilizator dorin31Geman Dorin Andrei dorin31 Data 22 martie 2017 01:08:58
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
/*#include <cstdlib>
#include <ctime>*/

#define maxN 3000003

using namespace std;

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

int n,k,v[maxN];

int getKthElement(int left, int right, int k)
{
    while (left<right)
    {
        int p=left, q=right, pivot=v[(p+q)/2];

        while (p<q)
        {
            if (v[p]>=pivot) { swap(v[p],v[q]); --q; }
            else ++p;
        }

        if (v[q]>pivot) --q;

        if (k<=q) right=q;
        else left=q+1;
    }

    return v[k];
}

int main()
{
    //srand(time(NULL));
    fin>>n>>k;
    for (int i=1; i<=n; ++i)
        fin>>v[i];
    fout<<getKthElement(1,n,k);
    return 0;
}