Vòng tròn

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1100 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng gồm \(n\) phần tử. Coi mảng này là một mảng vòng tròn (tức là phần tử đứng sau \(a_n\)\(a_1\)). Nhiệm vụ của bạn là sắp xếp lại các phần tử trong mảng sao cho tổng giá trị tuyệt đối của hiệu giữa các phần tử liên tiếp là lớn nhất.

Cụ thể, hãy tìm giá trị lớn nhất của biểu thức:
\(|a_1 - a_2| + |a_2 - a_3| + \dots + |a_{n-1} - a_n| + |a_n - a_1|\)

Input

  • Dòng đầu tiên chứa số nguyên dương \(n\).
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) cách nhau bởi dấu cách.

Output

  • Một số nguyên duy nhất là tổng lớn nhất tìm được.

Constraints

  • \(2 \le n \le 10^5\)
  • \(1 \le a_i \le 10^9\)

Example

Test 1

Input
4
4 2 1 8
Output
18
Note

Sắp xếp lại mảng thành \(\{1, 8, 2, 4\}\).
Tổng hiệu các phần tử liên tiếp là: \(|1 - 8| + |8 - 2| + |2 - 4| + |4 - 1| = 7 + 6 + 2 + 3 = 18\).

Test 2

Input
3
10 12 15
Output
10
Note

Một cách sắp xếp là \(\{10, 15, 12\}\).
Tổng là: \(|10 - 15| + |15 - 12| + |12 - 10| = 5 + 3 + 2 = 10\).

Bình luận (1)

Mới nhất
Tải bình luận...