仔细理解题意,不难想到对于B数组第i个元素而言,其对应的A数组中元素如果比其前i-1个元素的最大值大,则在计算最小值与最大值时需要加上第i个数组的值,但是由于B数组单调不减,则当第i个元素的值与前i-1个元素的最大值相等时,在计算最小值时直接加上0即可
#include<iostream> using namespace std; int n; int B[105]; int maxn=0,minn=0; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>B[i]; } maxn=B[1]; minn=B[1];//第一个元素必然被加上 for(int i=2;i<=n;i++){ if(B[i]==B[i-1]){ minn+=0; }else{ minn+=B[i]; } maxn+=B[i]; } cout<<maxn<<endl; cout<<minn<<endl; return 0; }