思路:
题目设置为数组b单调不减,因此每次最新的i值就是最大的数,考虑做法比较简单,只需要考虑大于和等于两种情况
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
int b[100001];//存放b数组
int maxnum[100001];//存放最大可能的取值
int minnum[100001];//存放最小可能的取值
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=2;i<=n;i++){
maxnum[1]=b[1];
minnum[1]=b[1];
if(b[i]>b[i-1]){
maxnum[i]=b[i];
minnum[i]=b[i];
}
if(b[i]==b[i-1]){
maxnum[i]=b[i];
minnum[i]=0;
}
}
int maxsum=0,minsum=0;
for(int i=1;i<=n;i++)
{
maxsum+=maxnum[i];
minsum+=minnum[i];
}
cout<<maxsum<<endl<<minsum;
}