国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > URAL 1296. Hyperjump(最大子序列和)

URAL 1296. Hyperjump(最大子序列和)

来源:程序员人生   发布时间:2015-03-30 08:56:29 阅读次数:3481次

题目链接: http://acm.timus.ru/problem.aspx?space=1&num=1296


Developed in the beginning of XXI century, hyperjump remains the primary method of transportation for distances up to thousands parsecs. But physicists have recently discovered an amazing phenomenon. They believe the duration of the hyperjump alpha phase can be easily controlled. Alpha phase is the period when hyper-spacecraft accumulates its gravity potential. The larger is the gravity potential accumulated, the less energy is required to complete the hyperjump. Your task is to write a program, which would help pilots decide when to enter and when to leave the alpha-phase, in order for the hyperspacecraft to accumulate the largest possible gravity potential.
The most crude gravity field model (which you will have to use) yields the sequence of integers pi, which represent field intensities at different moments in time. According to this model, if the alpha-phase begins at moment i and ends at moment j, then the value of gravity potential accumulated will be equal to the sum of sequence elements at places from i-th to j-th inclusive.

Input

The first line of the input contains an integer N being the number of elements in the intensity values sequence (0 ≤ N ≤ 60000). Next N lines specify sequence elements, each line containing a single integer pi (?30000 ≤ pi ≤ 30000).

Output

The only line of output contains the largest possible value of the gravity potential that can be accumulated by a hyperspacecraft during the alpha phase. You should assume that the initial gravity potential of a hyperspacecraft is equal to zero.

Samples

input output
10 31 ⑷1 59 26 ⑸3 58 97 ⑼3 ⑵3 84
187
3 ⑴ ⑸ ⑹
0

PS:

如果最小和小于零 ,输出零!

代码以下:

#include <cstdio> int main() { int n; int a[60047]; while(~scanf("%d",&n)) { for(int i = 0; i < n; i++) { scanf("%d",&a[i]); } int maxx = 0, sum = 0; for(int i = 0; i < n; i++) { sum+=a[i]; if(sum <= 0) { sum = 0; } if(sum > maxx) { maxx = sum; } } printf("%d ",maxx); } return 0; }


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生