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 {
  let n = xs.len();
  let mut ans = (xs[0] - xs[1]).abs();
  for i in 0..n {
    for j in 0..i {
      ans = std::cmp::max(ans, (xs[i] - xs[j]).abs());
    }
  }
  ans
}

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()
}