Cod sursa(job #2431312)

Utilizator rd211Dinucu David rd211 Data 18 iunie 2019 21:54:00
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <random>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int a[3000010];
int k,res=-121;
void quicksort(int st,int dr)
{
    if(st<dr && res ==-121)
    {
        int randomIndex = st + rand()%(dr-st);
        int pivot = a[randomIndex];
        int i=st-1,j=dr+1;
        while(true)
        {
            do
            {
                i++;
            }
            while(a[i]<pivot);
            do
            {
                j--;
            }
            while(a[j]>pivot);
            if(i<j)
                swap(a[i],a[j]);
            else
                break;
        }
        if(i+1==k)
            res = pivot;
        quicksort(st,i-1);
        quicksort(i+1,dr);
    }
}
int main()
{
    int n;
    fin>>n>>k;
    srand(n+k);
    for(int i = 0;i<n;i++)
        fin>>a[i];
    quicksort(0,n-1);
    cout<<res<<endl;
    return 0;
}