Cod sursa(job #385884)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 23 ianuarie 2010 18:23:34
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<stdio.h>
#include<ctype.h>
#define MAX 10001
int a[3000010],k,n;
void qsort (int st,int dr)
{
    int i=st,j=dr,piv=a[(st+dr)/2],aux;
    do
    {
        while(a[i]<piv)
            ++i;
        while(piv<a[j])
            --j;
        if(i<=j)
        {
            aux=a[i];
            a[i]=a[j];
            a[j]=aux;
            ++i;
            --j;
        }
    }
    while(i<=j);
    if(st<=k && k<=j)
        qsort(st,j);
    else if (i<=k && k<=dr)
        qsort(i,dr);
}
char s[MAX];
int cnt;
inline void read(int &x)
{
    while(!isdigit(s[cnt]))
        if(++cnt==MAX)
        {
            fread(s,1,MAX,stdin);
            cnt=0;
        }
    for(x=0;isdigit(s[cnt]);)
    {
        x=x*10+s[cnt]-'0';
        if(++cnt==MAX)
        {
            fread(s,1,MAX,stdin);
            cnt=0;
        }
    }
}
int main ()
{
    freopen("sdo.in","r",stdin);
    freopen("sdo.out","w",stdout);
    int i;
    read(n);
    read(k);
    for(i=1;i<=n;++i)
        read(a[i]);
    qsort (1,n);
    printf("%d",a[k]);
    return 0;
}