Cod sursa(job #385873)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 23 ianuarie 2010 18:10:45
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#include<stdlib.h>
int a[3000005],k,n;
void qsort (int st,int dr)
{
    int i=st,j=dr,mij=(st+dr)/2,aux;
    int piv=a[mij];
    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(mij==k)
    {
        printf("%d",a[k]);
        exit (0);
    }
    if(k<mij)
        qsort(st,j);
    else
        qsort(i,dr);
}
int main ()
{
    freopen("sdo.in","r",stdin);
    freopen("sdo.out","w",stdout);
    int i;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;++i)
        scanf("%d",&a[i]);
    qsort (1,n);
    printf("%d",a[k]);
    printf("\n");
    for(i=1;i<=n;++i)
        printf("%d ",a[i]);
    return 0;
}