链接:http://codeforces.com/problemset/problem/1038/D
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <sstream>
#include <fstream>
#define debug puts("-----")
#define pi (acos(-1.0))
#define eps (1e-8)
#define inf (1<<30)
using namespace std;
typedef long long ll;
const int N = 500000 +100;
int a[N];
int main(int argc, char const *argv[])
{
int n;
int num=0, num_d=0;
ll sum = 0;
cin>>n;
for (int i = 0; i < n; ++i)
{
cin>>a[i];
sum += abs(a[i]);
if(a[i]<0) num++;
else num_d++;
}
if(n==1) cout<<a[0]<<endl;
else
{
ll ans =0;
if(num&&num_d)
{
//有正负 正负都有只要相加绝对值 可以自己去尝试一下
for(int i =0;i<n;i++)
{
ans+=abs(a[i]);
}
}
// 全正全负 则是
else
{
for(int i =1;i<n;i++)
{
ans=max(ans,sum-abs(a[i])-abs(a[i-1])+abs(a[i]-a[i-1]));
}
}
cout<<ans<<endl;
}
return 0;
}
/*
4 3 2 1 5
1 -1 -2 -7
-1 -4
1 -1 2 -3
ans=max(ans,sum-abs(a[i])-abs(a[i-1])+abs(a[i]-a[i-1]));
*/