In the first case, flip the segment from 2 to 5 (i = 2, j = 5). That flip changes the sequence, it becomes: [1 1 1 0 1]. So, it contains four ones. There is no way to make the whole sequence equal to [1 1 1 1 1].
In the second case, flipping only the second and the third element (i = 2, j = 3) will turn all numbers into 1.
1 #include<stdio.h>
2 int main()
3 {
4 int n,i;
5 int a[101];
6 while(~scanf("%d",&n))
7 {
8 int sum=0;
9 for(i=0;i<n;i++)
10 {
11 scanf("%d",&a[i]);
12 sum+=a[i];
13 }
14 int k=0,max=0;
15 for(i=0;i<n;i++)
16 {
17 if(a[i]==0)
18 {
19 k++;
20 }
21 else
22 {
23 if(k>0)
24 k--;
25 }
26 if(k>=max)
27 max=k;
28 }
29 if(max)
30 printf("%d\n",max+sum);
31 else
32 printf("%d\n",max+sum-1);
33 }
34 return 0;
35 }