Cod sursa(job #1149079)

Utilizator hrazvanHarsan Razvan hrazvan Data 21 martie 2014 14:15:39
Problema Statistici de ordine Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
#define N_MAX 3000000
int v[ N_MAX ];

void qs ( int st, int dr, int k ){
    int i = st, j = dr, piv = v[ ( dr + st ) / 2 ], aux;
    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 ( i <= k ){
        if ( i < dr )   qs ( i, dr, k );
    }
    else  if ( j > st )     qs ( st, j, k );
    return ;
}

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