Cod sursa(job #2308457)

Utilizator alexdumitrescuDumitrescu George Alex alexdumitrescu Data 27 decembrie 2018 09:59:45
Problema Statistici de ordine Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <algorithm>

using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int v[3000005], n, i, k;
int partitie(int st, int dr)
{
    int poz=rand()%(dr-st+1)+st;
    swap(v[st], v[poz]);
    int pivot=v[st];
    while(st<dr)
    {
        while(st<dr&&v[st]<pivot)
            st++;
        while(st<dr&&v[dr]>pivot)
            dr--;
        swap(v[st], v[dr]);
    }
    v[st]=pivot;
    return st;
}
void quick(int st, int dr)
{
    if(st==dr)
        return;
    int poz=partitie(st, dr);
    if(poz==k)
        return;
    else if(poz>=k)
        quick(st, poz);
    else quick(poz+1, dr);
}
int main()
{
    srand(time(NULL));
    fin >> n >> k;
    for(i=1;i<=n;i++)
        fin >> v[i];
    quick(1, n);
    fout << v[k];
    return 0;
}