You are given an integer array with N
elements: d[0], d[1], ... d[N - 1]
. You can perform AT MOST one move on the array: choose any two integers [L, R]
, and flip all the elements between (and including) the L
-th and R
-th bits. L
and R
represent the left-most and right-most index of the bits marking the boundaries of the segment which you have decided to flip.
What is the maximum number of 1
-bits (indicated by S
) which you can obtain in the final bit-string?
'Flipping' a bit means, that a 0
is transformed to a 1
and a 1
is transformed to a 0
(0->1
,1->0
).
Input Format: An integer N
, next line contains the N
bits, separated by spaces: d[0] d[1] ... d[N - 1]
Output: S
Constraints:
1 <= N <= 100000,d[i] can only be 0 or 1 ,0 <= L <= R < n ,
Sample Input:
81 0 0 1 0 0 1 0
Sample Output: 6
Explanation:
We can get a maximum of 6 ones in the given binary array by performing either of the following operations:
Flip [1, 5] ==> 1 1 1 0 1 1 1 0