You want to arrange n integers a1, a2, ..., an in some order in a row. Let's define the value of an arrangement as the sum of differences between all pairs of adjacent integers.
More formally, let's denote some arrangement as a sequence of integers x1, x2, ..., xn, where sequence x is a permutation of sequence a. The value of such an arrangement is (x1-x2) + (x2-x3) + ... + (xn-1 - xn). Find the largest possible value of an arrangement. Then, output the lexicographically smallest sequence x that corresponds to an arrangement of the largest possible value.
The first line of the input contains integer n (2 <= n <= 100). The
second line contains n space-separated integers a1, a2, ..., an(|ai| <= 1000).
Print the required sequence x1, x2, ..., xn. Sequence x should be the lexicographically smallest permutation of a that corresponds to an arrangement of the largest possible value.
In the sample test case, the value of the output arrangement is (100 - (-50)) + ((-50) - 0) + (0 - 50) + (50 - (-100)) = 200. No other arrangement has a larger value, and among all arrangements with the value of 200, the output arrangement is the lexicographically smallest one.
Sequence x1, x2, ..., xp is lexicographically smaller than sequence y1, y2, ..., yp if there exists an integer r (0 <= r < p), such
that x1 = y1, x2 = y2, ... , xr = yr and x[r+1] < y[r+1].
題目很水,,不知道為啥沒人做,可能是因為英文有點難懂吧。。
水題思路:只要將全部數據按從小到大排下序,然後交換第一個和最後一個就OK了!!
AC代碼:
#include#include #include using namespace std; int main() { int n; int a[110]; while(scanf("%d", &n)!=EOF) { for(int i=0; i