Cod sursa(job #1321328)

Utilizator YusukeFMI Mares Medar Razvan Yusuke Data 18 ianuarie 2015 23:54:44
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
#define drand a+rand()%(b+1-a)
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int i , N, a[3000005], j, EL;
int random(int a,int b){return drand;}
void qsort(int st, int dr, int elem){
    int i, j, pivot,aux;
    if (st > dr) return ;
    i = st; j = dr;
    pivot = a[random(st , dr)];
    while(i <= j)
    {
        while(a[i] < pivot) i++;
        while(a[j] > pivot) j--;
        if (i<=j)
        {
            aux=a[i];a[i]=a[j];
            a[j]=aux;
            i++; j--;
        }
    }
    if(st < dr){
        if(j-st+1 >= elem)
            return qsort(st, j, elem);
        else
            return qsort(j+1, dr,elem-j+st-1);
    }
}
int main()
{
    f >> N;
    f >> EL;
    for( i = 1 ; i <= N ; i++ ) f >> a[i];
    qsort(1 , N, EL);
    g << a[EL];
}