PARSUMS - Nonnegative Partial Sums

You are given a sequence of n numbers a0 ... an−1. A cyclic shift by k positions (0 ≤ kn−1) results in the following sequence: ak, ak+1 ... an−1, a0, a1 ... ak−1. How many of the n cyclic shifts satisfy the condition that the sum of the first i numbers is greater than or equal to zero for all i with 1 ≤ in?

Input

Each test case consists of two lines. The first contains the number n (1 ≤ n ≤ 106), the number of integers in the sequence. The second contains n integers a0 ... an−1 (−1000 ≤ ai ≤ 1000) representing the sequence of numbers. The input will finish with a line containing 0.

Output

For each test case, print one line with the number of cyclic shifts of the given sequence which satisfy the condition stated above.

Example

Input:
3
2 2 1
3
-1 1 1
1
-1
0

Output:
3
2
0

Problem setter: Adrian Kuegel

Added by:David García Soriano
Date:2011-11-26
Time limit:8.989s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:Southwestern Europe Regional, SWERC 2011

hide comments
2019-02-13 07:42:49
res = 0
for each cyclic shift:
_if cumulative sum array of cyclic shift contains no negative values:
__res += 1;

Good problem, a bit harder to crack than seemed to, when I got the statement right that is.

Last edit: 2019-02-13 07:44:43
2015-01-13 07:13:57 Sahil Sharma
Hi,

Could someone please tell me about how one can get a solution as fast as under 1 second for this problem? Are there some algorithm level optimizations for this problem? My algorithm is O(n)(with a reasonably small constant) and also uses fast Input (getchar() based) and yet it takes 6.6 seconds.

Thanks
2014-04-22 23:11:32 AlcatraZ
Nice and Tricky.. ;)
2014-01-04 13:21:55 Ankit Jain
logical question
2011-12-22 17:26:35 BOND
@accept
first i numbers mean every number starting from base index till i
if 1 is your base index then yes,otherwise by default it starts with index 0
2011-12-22 10:54:07 accept
what's mean of first i number..
is this number start from 1 or random..
2011-12-21 15:54:38 BOND
edit- got it

Last edit: 2012-05-26 12:50:59
2011-12-15 14:32:28 Adrian Kuegel
Please tell which part is unclear to you.
Here is an example: If the original sequence is -1 1 1,
then there are 3 cyclic shifts: shift by 0 positions results in -1 1 1, shift by 1 positions results in 1 1 -1, shift by 2 positions results in 1 -1 1.

Last edit: 2011-12-15 14:35:20
2011-12-15 14:24:20 Vratika Ghatiya
Please elaborate i !!
For 0 Shift we have to check -1 >= 0 , for 1st shift 1+1 >=0 and for 2nd shift 1+(-1)+1 >= 0 , is it so..??

Last edit: 2011-12-16 08:55:09
2011-12-03 09:34:10 sri
what is the value of i???
could not understand the question properly..
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.