Problem:
Score : 200 points

Problem Statement

You are given an integer sequence A of length N.
Find the maximum absolute difference of two elements (with different indices) in A.

Constraints

2 \leq N \leq 100

1 \leq A_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 ... A_N

Output

Print the maximum absolute difference of two elements (with different indices) in A.

Sample Input 1

4
1 4 6 3

Sample Output 1

5

The maximum absolute difference of two elements is A_3-A_1=6-1=5.

Sample Input 2

2
1000000000 1

Sample Output 2

999999999

Sample Input 3

5
1 1 1 1 1

Sample Output 3

0

Solution in C (GCC 5.4.1) (judge verdict: Runtime Error)

#include<stdio.h>
#include<stdlib.h>

int merge(int *,int ,int ,int);

int main(){
    int *a;
    int i,n,ans;
    scanf("%d",&n);
    for(i=0; i<n; i++){
        scanf("%d",&a[i]);
    }
    merge(a,0,(n-1)/2,n-1);

    for(i=0; i<n; i++){
        printf("%d ",a[i]);
    }

    ans=a[n-1]-a[0];
    printf("%d\n",ans);
    return 0;
}

int merge(int *array, int p, int q, int r){
                                      
    int *t;
    t = (int*)malloc(sizeof(int)*(r-p+1));
                                     

    int count = 0;                    
    int a=p, b=q+1, i=0;               
    
    while(a<=q&&b<=r){               
        if(array[a]>array[b]){         
            t[i]=array[b];
            i++;                          
            b++;
        }
        else{
            t[i]=array[a];               
            i++;                        
            a++;
        }
        count++;
    }
    while(a<=q){                      
            t[i]=array[a];
            i++;
            a++;
    }
    while(b<=r){                       
            t[i]=array[b];
            i++;
            b++;
    }
    for(i=0; i<r-p+1; i++){           
            array[i+p]=t[i];
    }
    free(t);                     
    return count;                   
}