传送门
分析:如果没有负号,就把所有数直接相加!!!如过存在负号,可以在负号后边加一个大括号,如果是正数,就把正放在符号前面(都是相加的),如果是负数,就把负数放在里面,因为必须起码有一个数字放括号里面,所以就减最小的那个数;又因为符号前面必须得有数字,所以必须加最大的那个数,其他的加上绝对值即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,sum;
ll a[1000000];
int main()
{
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n+m+1;i++)
scanf("%lld",&a[i]);
if(!m)
{
for(int i=1;i<=n+m+1;i++)
sum+=a[i];
printf("%lld\n",sum);
}
else
{
sort(a+1,a+n+m+2);
for(int i=2;i<=n+m;i++)
sum+=abs(a[i]);
printf("%lld\n",sum-a[1]+a[n+m+1]);
}
}