#include #include #include #include #include #include #include void merge (int *a, int n, int m) { int i, j, k; int *x = malloc(n * sizeof (int)); for (i = 0, j = m, k = 0; k < n; k++) { x[k] = j == n ? a[i++] : i == m ? a[j++] : a[j] < a[i] ? a[j++] : a[i++]; } for (i = 0; i < n; i++) { a[i] = x[i]; } free(x); } void merge_sort (int *a, int n) { if (n < 2) return; int m = n / 2; merge_sort(a, m); merge_sort(a + m, n - m); merge(a, n, m); } int _abs(int a, int b); int main(){ int n, curr_min = 0x7FFFFFFF, min_b; scanf("%d",&n); int *a = malloc(sizeof(int) * n); for(int a_i = 0; a_i < n; a_i++){ scanf("%d",&a[a_i]); } merge_sort(a, n); for (int i = 0 ; i < (n - 1); i++) { int val; val = _abs(a[i], a[i+1]); curr_min = curr_min > val ? val : curr_min; } // your code goes here printf("%d", curr_min); return 0; } int _abs(int a, int b) { return ((a - b) > 0) ? (a - b) : ((a - b) * -1); }