Maximum Subsequence Sum(最大子序列和,在线处理法)

Maximum Subsequence Sum

最大子序列和

在线处理法

 

 稍加修改, 记录最大和的位置

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int K;
 5 int d[100006];
 6 int main()
 7 {
 8     cin>>K;
 9     for(int i=0;i<K;i++) cin>>d[i];
10     int ans_l=0,ans_r=K-1;
11     int l=0,r=K-1;
12     long long now=0,maxx=-1;
13     for(int i=0;i<K;i++)
14     {
15         now+=d[i];
16         if(now>maxx)
17         {
18             maxx=now;
19             r=i;
20             ans_l=l;
21             ans_r=r;
22         }
23         else if(now<0)
24         {
25             now=0;
26             l=i+1;
27         }
28     }
29     if(maxx<0) maxx=0;
30     cout<<maxx<<" "<<d[ans_l]<<" "<<d[ans_r]<<endl;
31     return 0;
32 }

 

posted @ 2020-02-17 15:02  liuyongliu  阅读(229)  评论(0编辑  收藏  举报