正与负(c++题解)

题目描述

给定由 n 个元素组成的数组a ,找到在执行以下操作任意次数后,数组可能具有的最大可能总和:

操作:选择  2 个相邻的元素并翻转它们的符号。

输入格式

第一行包含一个整数 ,表示数组的长度 接下来的一行包含 n  个以空格分隔的整数 

输出格式

输出在执行所描述的操作任意次数后,数组可能具有的最大可能总和。

样例

样例输入 1

复制3
-1 -1 -1

样例输出 1

复制1

样例输入 2

复制5
1 5 -5 0 2

样例输出 2

复制13

_____________________________________________________________________________

一开始暴力0分啊,小瞧语法基础了

又是longlong困了我114514毫秒

呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include 
using namespace std;
long long n,ans,x,y,Min=1000000005;//注意要开long long
long long a[1000005];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
	    cin>>a[i];
	    if(a[i]<0)x++;
	    if(a[i]==0)y=1;
	    ans+=abs(a[i]);
	    Min=min(abs(a[i]),Min);
	}
	if(x%2==0||y==1)cout<

你可能感兴趣的:(c++,算法,数据结构)