链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
小美有一个长度为 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
代码:
#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;
}