#11. Left and Right Houses

Left and Right Houses

题目描述

逍遥村有 nn 栋房子。村民们决定修建一条大路,将村子分为左右两边。每个居民都想住在街道的右侧或左侧,这可以用序列 a1,a2,,ana_1,a_2,…,a_n 来描述,其中 aj=0a_j=0 表示位置 jj 处房子的居民想住在街道的左侧;否则, aj=1a_j=1

道路将从两栋房子之间穿过。它左边的房子将被宣布为左侧,右边的房子将被宣布为右侧。更正式地说,让道路从房屋 iii+1i+1 之间通过。那么位于 11ii 之间的房屋将位于街道的左侧,位于 i+1i+1​ 和 nn​ 之间的房屋将位于街道的右侧。道路也可以经过第一栋房屋之前和最后一栋房屋之后;在这种情况下,整个村庄分别被宣布为右侧或左侧。

为了使设计公平,我们决定在铺设道路时,至少要让村子两边各一半的居民对选择感到满意。也就是说,在一侧的 xx 个居民中,至少有 x2⌈\frac {x}{2}⌉ 个居民愿意住在这一侧,其中 x⌈x⌉ 表示四舍五入的实数 xx

image

在路的左边会有 ii 座房子,至少要有 i2⌈\frac {i}{2}⌉00;路的右边有 nin−i 座房子,至少要有 ni2⌈\frac {n-i}{2}⌉11

确定在哪座房子 ii 之后铺设道路,以满足所述条件,并尽可能靠近村庄中央。从形式上看,在所有合适的位置 ii 中,尽量减少 n2i∣\frac {n}{2} - i∣

如果有多个合适的位置,输出较小的一个。

输入格式

第一行包含一个整数 n(3n3105)n ( 3≤n≤3⋅10^5 )。每个测试用例的下一行包含一个长度为 nn 的字符串 aa ,该字符串仅由 0011 组成。

输出格式

输出一个数字 ii --道路应该铺设在房屋之后的位置(如果道路应该铺设在第一栋房屋之前,则输出 00 )。

样例

样例输入 #1

3
101

样例输出 #1

2

样例输入 #2

6
010111

样例输出 #2

3

提示

样例解释 11:

第一栋房屋后铺设道路,那么街道左侧将有一栋房屋 a1=1a_1=1 ,其居民希望住在街道右侧,不会感到满意,这意味着道路不能铺设在第 11 户之后。

如果我们在第二栋房屋后铺设道路,两边各有一半以上的居民对选择感到满意,这意味着道路可以铺设在房屋 22 之后。这是最优答案。