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 Rust (1.15.1) (judge verdict: Accepted)

use std::io;
use std::str::FromStr;

fn naive(xs : &Vec<i32>) -> i32 {
    xs.iter().enumerate().fold(
        std::i32::MIN,
        |ans, (i, x)| xs[0..i].iter().fold(
            ans,
            |max, y| std::cmp::max(max, (x - y).abs())
        )
    )
}

fn solve(xs : &Vec<i32>) -> i32 {
    xs.iter().max().unwrap().clone() - xs.iter().min().unwrap().clone()
}

fn main() {
    let _ : i32 = read();
    let xs : Vec<i32> = reads();
    assert_eq!(naive(&xs), solve(&xs));
    println!("{}", solve(&xs));
}


#[allow(dead_code)]
fn read<T>() -> T where T : FromStr {
    let mut ln = String::new();
    io::stdin().read_line(&mut ln).ok();
    ln.trim().parse().ok().unwrap()
}

#[allow(dead_code)]
fn reads<T>() -> Vec<T> where T : FromStr {
    let mut ln = String::new();
    io::stdin().read_line(&mut ln).ok();
    ln.trim().split_whitespace().map(|x| x.parse().ok().unwrap()).collect()
}