Cod sursa(job #1184798)

Utilizator Cezar_MihalceaCezar Mihalcea Cezar_Mihalcea Data 14 mai 2014 09:36:32
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
FILE *in,*out;
int v[100];
void schimb(int &a,int &b)
{
    int aux;
    aux=a;
    a=b;
    b=aux;
}
int part(int st,int dr)
{
    int i,j;
    j=st;
    for(i=st;i<dr;i++)
    {
        if(v[i]<v[dr])
            schimb(v[j++],v[i]);
    }
    schimb(v[j],v[dr]);
    return j;
}
void qs2(int st,int dr,int poz)
{
    if(st>=dr)
        return;
    int p=part(st,dr);
    if(poz<p)
        qs2(st,p-1,poz);
    if(poz>p)
        qs2(p+1,dr,poz);
}
int main()
{
    in=fopen("sdo.in","r");
    out=fopen("sdo.out","w");
    int n,i,k;
    fscanf(in,"%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        fscanf(in,"%d",&v[i]);
    }
    qs2(1,n,k);
    fprintf(out,"%d",v[k]);
    return 0;
}