Cod sursa(job #1309821)

Utilizator eneandradaEne Oana-Andrada eneandrada Data 6 ianuarie 2015 05:36:55
Problema Statistici de ordine Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");

long i,n,k;
long long v[3000000],piv,kth;

long poz(long s, long d)
{
    piv=v[s];
    while(s<d)
    {
        if(v[s]>v[d])
            swap(v[s],v[d]);
        else
            if(v[s]==piv)
                d--;
            else
                s++;
    }
    return s;
}

void quick(int s, int d)
{
    long p;
    if(s<d)
    {
        p=poz(s,d);
        if(p>k)
            quick(s,p-1);
        else
            if(p<k)
                {quick(p+1,d); k=k-p+1;}
            else
                kth=v[p];
    }
}

int main()
{
    f>>n>>k;
    for(i=1;i<=n;i++)
        f>>v[i];
    quick(1,n);
    g<<kth;
    return 0;
}