1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later
2*49cdfc7eSAndroid Build Coastguard Worker /* Copyright (c) 2021 Oracle and/or its affiliates. All Rights Reserved. */
3*49cdfc7eSAndroid Build Coastguard Worker
4*49cdfc7eSAndroid Build Coastguard Worker #include <stdio.h>
5*49cdfc7eSAndroid Build Coastguard Worker #include <stdlib.h>
6*49cdfc7eSAndroid Build Coastguard Worker
cmp(const void * a,const void * b)7*49cdfc7eSAndroid Build Coastguard Worker static int cmp(const void *a, const void *b)
8*49cdfc7eSAndroid Build Coastguard Worker {
9*49cdfc7eSAndroid Build Coastguard Worker return (*(int *)a - *(int *)b);
10*49cdfc7eSAndroid Build Coastguard Worker }
11*49cdfc7eSAndroid Build Coastguard Worker
main(int argc,const char * argv[])12*49cdfc7eSAndroid Build Coastguard Worker int main(int argc, const char *argv[])
13*49cdfc7eSAndroid Build Coastguard Worker {
14*49cdfc7eSAndroid Build Coastguard Worker const size_t size = argc - 1;
15*49cdfc7eSAndroid Build Coastguard Worker
16*49cdfc7eSAndroid Build Coastguard Worker if (!size) {
17*49cdfc7eSAndroid Build Coastguard Worker fprintf(stderr, "Please provide a numeric list\n");
18*49cdfc7eSAndroid Build Coastguard Worker return 1;
19*49cdfc7eSAndroid Build Coastguard Worker }
20*49cdfc7eSAndroid Build Coastguard Worker if (size == 1) {
21*49cdfc7eSAndroid Build Coastguard Worker printf("%d", atoi(argv[1]));
22*49cdfc7eSAndroid Build Coastguard Worker return 0;
23*49cdfc7eSAndroid Build Coastguard Worker }
24*49cdfc7eSAndroid Build Coastguard Worker
25*49cdfc7eSAndroid Build Coastguard Worker int arr[size];
26*49cdfc7eSAndroid Build Coastguard Worker size_t i;
27*49cdfc7eSAndroid Build Coastguard Worker
28*49cdfc7eSAndroid Build Coastguard Worker for (i = 0; i < size; ++i)
29*49cdfc7eSAndroid Build Coastguard Worker arr[i] = atoi(argv[i + 1]);
30*49cdfc7eSAndroid Build Coastguard Worker
31*49cdfc7eSAndroid Build Coastguard Worker qsort(arr, size, sizeof(arr[0]), cmp);
32*49cdfc7eSAndroid Build Coastguard Worker
33*49cdfc7eSAndroid Build Coastguard Worker const size_t size2 = size / 2;
34*49cdfc7eSAndroid Build Coastguard Worker printf("%d", (size & 1) ? arr[size2] : ((arr[size2 - 1] + arr[size2]) / 2));
35*49cdfc7eSAndroid Build Coastguard Worker
36*49cdfc7eSAndroid Build Coastguard Worker return 0;
37*49cdfc7eSAndroid Build Coastguard Worker }
38