仔細想想後,可以發現說,這題可以簡化成:有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); } } }
沒有留言:
張貼留言