3724: 攻与防(第四轮02)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

有 n  个战士站成一排, 分别编号为  1,2,3. . . n, 战士的战斗力等于他的编号   有一些战士只会进攻,有一些战士只会防守。现在我们要将他们从某个点开始分 成两个阵营,假设这个点为 pos(0 ≤ pos ≤ n),则编号小于等于 pos的战士为第 一个阵营, 编号大于 pos  的战士为第二个阵营。我们令第一个阵营为进攻方, 第二个阵营为防守方,假设第一个阵营中能够进攻的战士战斗力总和为 w,第 二个阵营中能够防守的战士战斗力总和为 v,我们希望  ∣ w − v  ∣   的值最小,其   || 为绝对值符号。求  ∣ w − v  ∣   的最小值。

输入

第一行输入一个正整数 n,表示战士的数量(即后续给出的字符串的长度)。

第二行给出一个字符串 s,仅由字符 0    1  组成,字符串中的每一位分别代表 每一位战士的属性, 0  代表这个战士只会进攻, 1  代表这个战士只会防守。

输出

输出一行一个整数表示答案。

样例输入 复制

4
0011

样例输出 复制

1

提示

【样例 1 输入】

4

0011

【样例 1 输出】

1

【样例 1 说明】

假设我们在第二个位置切割,这样左边的字符串为 0,右边的字符串为  1,代表 左边有 2  个会进攻的战士, 战斗力之和为  1 + 2 = 3,右边有  2  个会防守的战 士,战斗力之和为  3 + 4 = 7,即  |w − v |  =  |3 − 7| = 4。但如果我们在第三个位 置切割,左边的字符串为 001,右边的字符串为  1,此时左边会攻击的战士战斗 力之和还是 3,右边会防守的战士战斗力为  4,此时差值为  1,差值最小。

【样例 2 输入】

7

1000101

【样例 2 输出】

2

【样例 2 说明】

第二个样例可以在第五个位置分割,即左边的字符串为  10001,右边的字符串为 01, 代表左边有 3  个会进攻的战士, 2  个会防守的战士, 所有会攻击战士的战 斗力之和即 w  =  2 + 3 + 4 = 9; 右边有  1  个会防守的战士, 1  个会进攻的战 士,所有会防守的战士的战斗力之和为 v = 7。所以  |9 − 7| = 2。

【数据范围】

对于 20%  的数据,  n ≤ 10    对于 40%  的数据, n ≤ 1000

对于  100%  的数据, n ≤ 100000


来源/分类