来源:牛客网
题目描述
小美有一个长度为 n 的数组,她想将这个数组进行求和,即 sum=a1+a2+...+an。
小美可以使用一次魔法(也可以不使用),将其中一个加号变成乘号,使得 sum 最大。
求出最大的 sum 。
输入描述:
第一行输入一个整数 n 。
第二行输入 n 个整数表示数组 a 。
1≤n≤10⁵
1≤ai≤10⁹
输出描述:
输出一个整数表示答案。
示例1
输入
6 1 1 4 5 1 4
输出
27
代码:
cpp
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
const int N=1e5+5;
int main(){
long long n,a[N],MAX=0,sum=0;
cin>>n;getchar();
long long u=0,cn=0;
for(long long i=1;i<=n;++i){
cin>>a[i];
sum+=a[i];
}
if(n==1){
cout<<a[1]<<endl;
}
else{
for(int i=1;i<n;++i){
if(a[i]+a[i+1]<a[i]*a[i+1]){
if(a[i]*a[i+1]>MAX){
MAX=max(MAX,a[i]*a[i+1]);
cn=a[i]+a[i+1];
}
}
}
if(MAX==0) printf("%lld",sum);
else cout<<sum-cn+MAX<<endl;
}
return 0;
}
