思路:动态规划,记录最大上升序列结尾数字下标;for循环倒着找出最大上升序列的首下标。
输出格式:
1.全为负数,输出格式是0 nums[0] nums[nums.size()-1];
2.正常按照普通格式输出就可以
#include<bits/stdc++.h>
using namespace std;
vector<int> nums;
int start=0,enD=0,sum=0,maxn=INT_MIN;
int main(){
int i,n;
cin>>i;
while(i--){
cin>>n;
nums.push_back(n);
}
for(int j=0;j<nums.size();j++){
sum=max(sum+nums[j],nums[j]);
if(sum>maxn){
maxn=sum;
enD=j;
}
}
if(maxn<0) cout<<0<<' '<<nums[0]<<' '<<nums[nums.size()-1];
else{
int sum=0;
for(int j=enD;j>=0;j--){
sum+=nums[j];
if(sum==maxn){
start=j;
break;
}
}
cout<<maxn<<' '<<nums[start]<<' '<<nums[enD];
}
return 0;
}