Cod sursa(job #1549902)

Utilizator redcrocodileIlies Andreea redcrocodile Data 12 decembrie 2015 21:50:19
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <cstdlib>
#include <vector>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
vector<int> V;
int n,x,i,k;
int quick(std::vector<int> &V, size_t start, size_t stop, int k)
{
    int i,j,pivot,loc;
    if (start==stop) {g<<V[stop]; return 0;}
    pivot = V[start + rand() % (stop-start+1)];
    i = start; j = stop;
    while (1)
    {
        while(V[i]<pivot)
            i++;
        while(V[j]>pivot)
            j--;
        if (i<j)
        {
            swap(V[i],V[j]); i++; j--;
        }
        else break;
    }
    loc = j - start + 1;
    if (loc>=k) quick(V,start,j,k);
    else quick(V,j+1,stop,k-loc);
}
int main()
{
    f>>n>>k;
    for (i=1;i<=n;i++)
    {f>>x; V.push_back(x);}
    quick(V,0,V.size()-1,k);
    return 0;
}