题目
过程
思路
每次输入一个Bi即可确定一个Ai值,用temp记录1~B[i-1],的最大值分为两种情况:
- 当temp不等于Bi时,则说明Bi值之前未出现过,Ai必须等于Bi才能满足Bi是Ai前缀最大的定义。
- 当temp等于Bi时,则说明Bi值之前已经出现过,此时Ai最小为0,最大为Bi。
最大值big和最小值small根据不同情况相加。
代码
cpp
#include <bits/stdc++.h>
using namespace std;
int n;
int B[100010];
int main()
{
cin>>n;
int big=0;
int small=0;
int temp=0;//当前最大值
for(int i=1;i<=n;i++)
{
cin>>B[i];
if(temp!=B[i])
{
big+=B[i];
temp=B[i];
small+=temp;
}
else
{
big+=temp;
small+=0;
}
}
cout<<big<<endl;
cout<<small<<endl;
}