#abc257c. [abc257_c]Robot Takahashi

[abc257_c]Robot Takahashi

题目描述

NN 个人,每个人可以是儿童或成年人。第 ii 个人的体重为 WiW_i
每个人是儿童还是成年人由一个由 01 组成的长度为 NN 的字符串 SS 指定。
如果 SS 的第 ii 个字符是 0,则第 ii 个人是儿童;如果是 1,则第 ii 个人是成年人。

当机器人 Takahashi 给出一个实数 XX 时,Takahashi 判断体重小于 XX 的人是儿童,体重大于或等于 XX 的人是成年人。
对于实数 XX,令 f(X)f(X) 为 Takahashi 正确判断是否为儿童或成年人的人数。

找到所有实数 XXf(X)f(X) 的最大值。

约束条件

  • 1leqNleq2times1051\\leq N\\leq 2\\times 10^5
  • SS 是一个由 01 组成的长度为 NN 的字符串。
  • 1leqWileq1091\\leq W_i\\leq 10^9
  • NNWiW_i 是整数。

输入

输入以以下格式从标准输入给出:

NN SS W1W_1 W2W_2 ldots\\ldots WNW_N

输出

在一行中以整数形式打印 f(X)f(X) 的最大值。


示例输入1

5
10101
60 45 30 40 80

示例输出1

4

当给定 X=50X=50 时,Takahashi 判断第 223344 个人是儿童,第 1155 个人是成年人。
事实上,第 2244 个人是儿童,第 113355 个人是成年人,所以 11224455 个人被正确判断。因此,f(50)=4f(50)=4

这是最大值,因为没有 XX 可以对所有 55 个人做出正确判断。因此,应该输出 44


示例输入2

3
000
1 2 3

示例输出2

3

例如,X=10X=10 可以达到最大值 f(10)=3f(10)=3
注意,这些人可能都是儿童或成年人。


示例输入3

5
10101
60 50 50 50 60

示例输出3

4

例如,X=55X=55 可以达到最大值 f(55)=4f(55)=4
注意,可能会有多个体重相同的人。