Cod sursa(job #1784206)

Utilizator UrsuDanUrsu Dan UrsuDan Data 19 octombrie 2016 20:57:26
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("sdo.in");
ofstream out ("sdo.out");

int k;
int v[3000010];
int piv(int st,int dr,int p)
{
    int i=st,j=dr,val=v[p];
    while(i<j)
    {
        while(v[i]<val)
            i++;
        while(v[j]>val)
            j--;
        if(i<j && v[i]!=v[j])
            swap(v[i],v[j]);
        else
            return j;
    }
}

void qsort(int st,int dr)
{
    int p=(st+dr)/2;
    p=piv(st,dr,p);
    if(p==k)
    {
        out<<v[p]<<endl;
        return;
    }
    if(p<k)
        qsort(p+1,dr);
    else
        qsort(st,p-1);
}

int main()
{
    int n,i;
    in>>n>>k;
    for(i=1; i<=n; i++)
        in>>v[i];
    qsort(1,n);
    return 0;
}