Cod sursa(job #1268735)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 21 noiembrie 2014 13:10:54
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <algorithm>

using namespace std;

unsigned long int m[300000];
int n,k;

void asd(int st, int dr, int x)
{
    int i=st, j=dr;
    while(i<j)
    {
        if(m[i]>=m[x])
        {
            while(m[j]>m[x])
                j--;
            swap(m[i],m[j]);
            if(i==x)
                x=j;
            if(j==x)
                x=i;
            j--;
        }
        i++;
    }
    if(x<k)
        asd(x+1,dr,(x+1+dr)/2);
    if(x>k)
        asd(st,x-1,(st+x-1)/2);
}
int main()
{
    freopen("sdo.in", "r", stdin);
    freopen("sdo.out", "w", stdout);
    scanf("%d %d ", &n, &k);
    k--;
    int i;
    for(i=0;i<n;i++)
        scanf("%d ", &m[i]);
    asd(0,n-1,n/2);
    printf("%d", m[k]);
    return 0;
}