小塔和小凯正在进行一场策略游戏,游戏中包含一列其n枚硬币,编号从1到n,小塔首先排列这些硬币,并决定每一枚硬币是正面朝上还是反面朝上。接下来,小凯的任务是选择一段连续且非空的区间,并将区间内的所有硬币翻转,以最大翻转后正面朝上的硬币数量。
现在小塔已经摆好了硬币,你需要回答小凯能够达到的最大正面朝上硬币数,以及他应该翻转哪个区间来实现这一目标。由于小凯是个懒人,如果存在多个区间可以达到最大数量,你应该返回长度最短的那个;如果长度最短的区间有多个,,返回最靠左的那个区间。
此题是一个较简单的前缀和问题,我们可以提前计算每一个前缀反面朝上比正面朝上的数量多多少,在前缀和计算好之后,从左至右计算以每一个位置作为结尾最优的翻转,即一个区间中反面朝上比正面朝上多最多的,所以试试记录一个在此之前的前缀的最小值,并标记位置
def solve():
s = input().strip()
n = len(s)
sum_count = 0