2016年11月7日 星期一

(Zj) b692: 第五題:棕櫚儀式

http://zerojudge.tw/ShowProblem?problemid=b692

仔細想想後,可以發現說,這題可以簡化成:有n個數字,你可以掛正負號,但是至少有一個正的 & 一個負的,然後最後使 sum 最大。


#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;

typedef long long LL;
const int MAX_N = 1e6 + 6;

LL a[MAX_N];

int main () {
    int n;
    while (scanf("%d",&n) != EOF) {
        for (int x=1;n>=x;x++) {
            scanf("%lld",&a[x]);
        }
        sort(a+1,a+n+1);
        if (n==1) printf("%lld\n",a[1]);
        else {
            long long ans = 0;
            ans = a[n] - a[1];
            for (int x=2;n-1>=x;x++) {
                if (a[x] > 0) ans += a[x];
                else ans -= a[x];
            }
            printf("%lld\n",ans);
        }
    }
}

沒有留言:

張貼留言