思路都写在代码里面了,做个记录
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
using ll = long long;
ll a[N],d[N];
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
ll n,ans = 0;cin >> n;
//因为这里既要对比出最大值又要对比出最小值
ll b = LONG_LONG_MAX;
ll c = LONG_LONG_MIN;
//加一个绝对值大的 减一个绝对值小的
for (int i = 1; i <= n; i++)
{
cin >> a[i];
a[i] = abs(a[i]);
if (i & 1)//为奇数位
{
ans += a[i];
//用b找到奇数位的最小值
b=min(a[i],b);
}
else
{
ans -= a[i];
//用c找到偶数位的最大值
c=max(c,a[i]);
}
}
//将b替换到偶数位,将c替换到奇数位就可以使交替和变大
if (c > b) ans += 2 * (c - b);
cout << ans << '\n';
return 0;
}