Cod sursa(job #1466365)

Utilizator diana-t95FMI Tudoreanu Diana Elena diana-t95 Data 29 iulie 2015 00:14:12
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <cstdlib>
#include<ctime>
#include<fstream>
using namespace std;
int v[3000004], n, k;
void citeste()
{
    int i;
    ifstream f("sdo.in");
    f>>n>>k;
    for (i=1;i<=n;++i) f>>v[i];
    f.close();
}
int pivot(int st, int dr)
{
    int i=st, j=dr, aux;
    aux=st + 1 + rand() %(dr-st);
    int p=v[aux];
    while (i<=j)
        {while (v[i]<p) i++;
         while (v[j]>p) j--;
         if (i<=j) {aux=v[i]; v[i]=v[j];v[j]=aux; i++; j--;}
        }
    return j;
}
void select(int st, int dr, int ind)
{
    if (st!=dr)
        {
            int m, p;
            p=pivot(st, dr);
            m=p-st+1;
            if (m>=ind) select(st, p, ind);
            else select(p+1, dr, ind-m);
        }
}
int main()
{
    citeste();
    srand(time(NULL));
    select(1, n, k);
    ofstream g("sdo.out");
    g<<v[k]<<'\n';
    g.close();
}