Cod sursa(job #1019615)

Utilizator gigel123Ionut. gigel123 Data 31 octombrie 2013 17:34:41
Problema Statistici de ordine Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>

int v[3000001],k;

void quicksort(int p,int u){
    int i,j,piv,aux;
    if(p>=u)return;
    i=p;
    j=u;
    piv=v[p+rand()%(u-p+1)];
    while(i<=j){
        while(v[i]<piv) i++;

        while(v[j]>piv) j--;

        if(i<=j){
            aux=v[i];
            v[i]=v[j];
            v[j]=aux;
            i++;
            j--;
        }
    }

    if(k<=j) quicksort(p,j);
    else quicksort(i,u);
}

int main()
{
    FILE *f,*g;
    int n,i;
    f=fopen("sdo.in","r");
    g=fopen("sdo.out","w");
    fscanf(f,"%d",&n);
    fscanf(f,"%d",&k);
    for(i=1;i<=n;i++){
        fscanf(f,"%d",&v[i]);
    }

    quicksort(1,n);

    fprintf(g,"%d",v[k]);
    fclose(f);
    fclose(g);
    return 0;
}