Home => ProblemSet => 2.12-69:[CF1667B]Optimal Partition
Problem2007--2.12-69:[CF1667B]Optimal Partition

2007: 2.12-69:[CF1667B]Optimal Partition

Time Limit: 1 Sec  Memory Limit: 128 MB  Submit: 0  Solved: 0
[ Submit ] [ Status ] [ Creator: ][ 参考程序 ]

Description

You are given an array a consisting of n integers. You should divide a into continuous non-empty subarrays (there are 2n−1 ways to do that).
Let  s=al+al+1+…+ar . The value of a subarray al,al+1,…,ar is:
  • (r−l+1) if s>0 ,
  • 0 if s=0 ,
  • −(r−l+1) if s<0 .
What is the maximum sum of values you can get with a partition?


给定一个有 n 个数的数列 n,现在把它分成若干段。对于其中一段 al,al+1,…,ar,设 s=al+al+1+…+ar,则定义 al,al+1,…,ar 一段的价值为:


  • (r−l+1) if s>0 ,
  • 0 if s=0 ,
  • −(r−l+1) if s<0 .

显然,通过某些分段方式,可以使 a 中每段价值和最大,求这个最大价值。


Input

The input consists of multiple test cases. The first line contains a single integer t (1≤t≤5⋅105 ) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer n ( 1≤n≤5⋅105 ).
The second line of each test case contains  n integers a1 , a2 , ..., an ( −109≤ai≤109 ).
It is guaranteed that the sum of n over all test cases does not exceed 5⋅105 .

Output

For each test case print a single integer — the maximum sum of values you can get with an optimal parition.

Sample Input Copy

5
3
1 2 -3
4
0 -2 3 -4
5
-1 -2 3 -1 -1
6
-1 2 -3 4 -5 6
7
1 -1 -1 1 -1 -1 1

Sample Output Copy

1
2
1
6
-1

HINT

Test case 1 : one optimal partition is [1,2] , [−3] . 1+2>0 so the value of [1,2] is 2 . −3<0 , so the value of [−3] is −1 . 2+(−1)=1 .
Test case 2 : the optimal partition is [0,−2,3] ,[−4] , and the sum of values is 3+(−1)=2 .