Cod sursa(job #2201470)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 4 mai 2018 21:00:34
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
#define nmax 3000005
using namespace std;
fstream f1("sdo.in", ios::in);
fstream f2("sdo.out", ios::out);
int v[nmax];
int partitionare(int st, int dr)
{
    int i, j, pivval=v[rand()%(dr-st+1)+st];
    swap(v[rand()%(dr-st+1)+st], v[dr]);
    i=st-1;
    for(j=st; j<dr; j++)
        if(v[j]<=pivval)
    {
        i++;
        swap(v[i], v[j]);
    }
    swap(v[i+1], v[dr]);
    return i+1;

}
void solutie(int st, int dr, int k)
{
    if(st<dr)
    {
    int piv=partitionare(st, dr);
    if(k>piv-st+1) solutie(piv+1, dr, k-(piv-st+1));
    else solutie(st, piv, k);
    }
}
int main()
{
   int i, n, k;
   f1>>n>>k;
   for(i=1; i<=n; i++) f1>>v[i];
   solutie(1, n, k);
   f2<<v[k];
    return 0;
}