题意:
给出一个整数K(K<=10000),输入K个整数。输出最大区间和,空格,区间起点的数值,空格,区间终点的数值。如果有相同的最大区间和,输出靠前的。如果K个数全部为负,最大区间和输出0,区间起点的数值为a[1],区间终点的数值为a[n]。
AAAAAccepted code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[10007]; 4 int main(){ 5 int n; 6 cin>>n; 7 int mx=-1e9,ans=-1e9; 8 int startt=0,endd=0; 9 int tmp=0; 10 for(int i=1;i<=n;++i){ 11 cin>>a[i]; 12 if(mx<0){ 13 mx=a[i]; 14 tmp=a[i]; 15 } 16 else 17 mx+=a[i]; 18 if(mx>ans){ 19 startt=tmp; 20 endd=a[i]; 21 ans=mx; 22 } 23 } 24 if(ans<0) 25 cout<<"0 "<<a[1]<<" "<<a[n]; 26 else 27 cout<<ans<<" "<<startt<<" "<<endd; 28 return 0; 29 }