#include #include int comp(const void* const a, const void* const b) { // const long double* a_ld = (const long double*)a; return *(const long double*)a - *(const long double*)b; } int main() { unsigned long long size = 0; if ( scanf("%llu", &size) == EOF ) return 0; long double* const values = (long double*)malloc(size * sizeof(long double)); if ( values == NULL ) { fprintf(stderr, "median: error: not enough memory\n"); return 1; } for ( long long index = 0; index < size; ++index ) if ( scanf("%Lg", &values[index]) == EOF ) return 2; qsort(values, size, sizeof(long double), comp); for ( long long index = 0; index < size; ++index ) printf("%llu: %Lg\n", index, values[index]); long double median = 0.0; if ( size % 2 == 0 ) median = (values[size / 2 - 1] + values[size / 2]) / 2.0; else median = values[size / 2]; printf("\n%Lg\n", median); free(values); return 0; }