#ABC257C. [ABC257C] 机器人(Robot Takahashi)

[ABC257C] 机器人(Robot Takahashi)

题目描述

小高是一个机器人。有 NN 个人,每个人要么是小孩,要么是大人。第 ii 个人的体重为 WiW_i

给定一个长度为 NN 的字符串 SS01 组成,表示每个人是小孩还是成年人。如果 SS 的第 ii 个字符为 0,则第 ii 个人是小孩;如果是 1,则 第 ii 个人是成年人。

当给小高一个实数 XX,小高会判断体重小于 XX 的人为小孩,体重大于等于 XX 的人为成年人。对于一个实数 XX,令 f(X)f(X) 表示小高正确判断是小孩还是成年人的人数。求 f(X)f(X) 的最大值。

输入格式

数据以下列形式给出:

NN

SS

W1W_1 W2W_2WNW_N

输出格式

在一行中输出 f(X)f(X) 的最大值。

输入输出样例 #1

输入 #1

5
10101
60 45 30 40 80

输出 #1

4

输入输出样例 #2

输入 #2

3
000
1 2 3

输出 #2

3

输入输出样例 #3

输入 #3

5
10101
60 50 50 50 60

输出 #3

4

说明/提示

样例 1 解释

当给小高 X=50X=50 时,他判定第 2,3,42,3,4 个人为小孩,其他人为成年人。

实际上,只有第 2,42,4 个人为小孩,其他人为成年人。小高判断正确了第 1,2,4,51,2,4,5 个人,因此 f(50)=4f(50)=4

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

样例 2 解释

小高可以令 X=10X=10 ,三个人都将判断正确。

注意,有可能所有人都是成年人,也有可能所有人都是小孩。

样例 3 解释

小高可以令 X=55X=55 ,他将判断正确了 44 个人。这是最大值。注意,可能会有两个人的体重相同。

数据范围

1N2×1051 \leq N \leq 2×10^5

SS 是一个长度为 NN 且仅含01的字符串。

1Wi1091 \leq W_i \leq 10^9

保证 NNWiW_i 都是整数。