码迷,mamicode.com
首页 > 其他好文 > 详细

zzu--2014年11月16日月赛 F题

时间:2014-11-19 11:21:30      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:acm   c++   水题   iostream   algorithm   

Problem F: Difference Row

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 8  Solved: 3
[Submit][Status][Web Board]

Description

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.

Input

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).

Output

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.

Sample Input

5
100 -100 50 0 -50

Sample Output

100 -50 0 50 -100

HINT

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 <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int main()
{
	int n;
	int a[110];
	while(scanf("%d", &n)!=EOF)
	{
		for(int i=0; i<n; i++)
		{
			scanf("%d", &a[i]);
		}
		sort(a, a+n);
		for(int i=0; i<n-1; i++)
		{
			if(i == 0) printf("%d ", a[n-1]);
			else printf("%d ", a[i]);
		}
		printf("%d\n", a[0]);
	}
	return 0;
}



zzu--2014年11月16日月赛 F题

标签:acm   c++   水题   iostream   algorithm   

原文地址:http://blog.csdn.net/u014355480/article/details/41256053

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!