小塔在研究一个有趣的数组翻转操作问题,其中为了考虑均衡,他会同时翻转相邻两个数。他有一个长度为N的数组a[],并可以进行任意次操作:选择相邻的两个数,翻转这两个数的符号,即将a[i]和a[i+1](0≤i<n−1)的符号都翻转。符号翻转的意思是正数变负数,负数变正数,在程序中即让num=−num,也即数学中的取相反数;当然0翻转后还是0。小明的任务是找到经过任意次数(可以为0次)这些操作后,能够获得的最大数组和。当然,只要小明觉得有必要,同一个数也可以被反复选择。
第一行包含一个整数N,表示数组的长度。
第二行包含N个整数,a[1],a[2],..a[N]。
1≤N≤30000,−1000000000≤a[i]≤1000000000。
输出一个整数,表示经过任意次操作后数组的最大和
输入
5
1 -2 3 -4 5
输出
15
在这个样例中,初始数组的和是'1−2+3−4+5=3'
通过选择相邻的−2和3翻转符号成[1,2,−3,−4,5],再选择−3和−4翻转符号,使得数组变为'[1,2,3,4,5]',得到的和是'1+2+3+4+5=15'。
扫码备注加群即可,期待您的到来~
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.