Cod sursa(job #1036344)

Utilizator cioionutFMI Ionut Ciocoiu cioionut Data 19 noiembrie 2013 11:09:59
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<iostream>
#include<fstream>
using namespace std;
int v[3000001];
void part(int p,int u,int &q)
{
    int i=p,j=u,m;
    m=v[(i+j)/2];
    do
    {
        while(v[i]<m) i++;
        while(v[j]>m) j--;
        if(i<=j)
        {
            swap(v[i],v[j]);
            if(v[j]==m) q=j;
            if(v[i]==m) q=i;
            i++;j--;
        }
    }while(i<j);
}
void qsort(int p,int u,int k)
{
    if (u-p+1<=1) return;
    else
    {
        int q=(p+u)/2;
        part(p,u,q);
        qsort(p,q-1,k);
        qsort(q+1,u,k);
    }
}
int main()
{
    ifstream f("sdo.in");
    ofstream g("sdo.out");
    int i,n,k;
    f>>n>>k;
    for(i=1;i<=n;i++) f>>v[i];
    qsort(1,n);
    g<<v[k];
    f.close();g.close();
    return 0;
}