codeforces 347A - Difference Row

给你一个序列,让你求(x1 - x2) + (x2 - x3) + ... + (xn - 1 - xn).值最大的一个序列,我们化简一下公式就会发现(x1 - x2) + (x2 - x3) + ... + (xn - 1 - xn). = x1 - xn, 也就是说只有第一个和最后一个是确定的,其他的随便了!  也不是了, 还要让你按字典序最小的排列,也就是说其他的是按飞递减序排列的,简单的一次排序就OK了。

//2013-09-21-09.07
#include 
#include 

using namespace std;

int a[120];

bool cmp(int x, int y)
{
    return x < y;
}

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


转载于:https://www.cnblogs.com/xindoo/p/3595031.html

你可能感兴趣的:(codeforces 347A - Difference Row)