Cod sursa(job #1016189)

Utilizator alexsuciuAlex Suciu alexsuciu Data 25 octombrie 2013 21:26:43
Problema Statistici de ordine Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<fstream>
#include<cstdlib>

using namespace std;
long long k,a[30000001],nr,n;

void poz(long long li,long long ls,long long &k)
{
   long long i=li,j=ls,x,c;
    x=a[li + rand() % (ls-li+1)];
    while(i<=j)
    {
        while(a[i]<x)
            i=i+1;
        while(a[j]>x)
            j=j-1;
        if(i<=j)
        {
            c=a[i];
            a[i]=a[j];
            a[j]=c;
            i++;
            j--;
        }
    }
    k=i;
}

void quick(long long li,long long ls,long long nr)
{
   if(li<ls)
    {
        poz(li,ls,k);
        if(nr<k) quick(li,k-1,nr);
        else quick(k,ls,nr);
    }
}

int main()
{
    long long i;
    ifstream f("sdo.in");
    ofstream g("sdo.out");
    f>>n>>nr;
    for(i=1;i<=n;i++)
        f>>a[i];
    quick(1,n,nr);
    g<<a[nr];

}