AT_abc257_c [ABC257C] Robot Takahashi

题目描述

有 $N$ 个人,每个人要么是小孩,要么是大人。第 $i$ 个人的体重为 $W_i$ 。 给定一个长度为 $N$ 的字符串 $S$ ,若 $S$ 的第 $i$ 个字符为```0```,则第 $i$ 个人为小孩;若 $S$ 的第 $i$ 个字符为```1```,第 $i$ 个人为大人。 高桥君认为,如果一个人体重小于 $X$ ,则他是小孩;如果一个人体重大于等于 $X$ ,则他是大人。 请选择合适的实数 $X$ ,使得高桥君判断正确的人数最大。输出这个最大值。 ### 数据范围 ### $1 \leq N \leq 2×10^5$ $S$ 是一个长度为 $N$ 且仅含```0```、```1```的字符串。 $1 \leq W_i \leq 10^9$ 保证 $N$ 和 $W_i$ 都是整数。

输入格式

数据以下列形式给出: $N$ $S$ $W_1$ $W_2$ … $W_N$

输出格式

选择合适的实数 $X$ ,使得高桥君判断正确的人数最大。输出这个最大值,并在末尾换行。 ### 样例解释 ### #### 样例1 #### 高桥君可以令 $X=50$ ,他判定第 $2,3,4$ 个人为小孩,其他人为大人。实际上,只有第 $2,4$ 个人为小孩,其他人为大人。高桥君判断正确了第 $1,2,4,5$ 个人,一共 $4$ 个人。这是最大值。 #### 样例2 #### 高桥君可以令 $X=10$ ,三个人都将判断正确。注意,有可能所有人都是大人,也有可能所有人都是小孩。 #### 样例3 #### 高桥君可以令 $X=55$ ,他将判断正确了 $4$ 个人。这是最大值。注意,可能会有两个人的体重相同。

说明/提示

### 制約 - $ 1\leq\ N\leq\ 2\times\ 10^5 $ - $ S $ は `0` と `1` からなる長さ $ N $ の文字列 - $ 1\leq\ W_i\leq\ 10^9 $ - $ N,W_i $ は整数 ### Sample Explanation 1 $ X=50 $ と設定すると、高橋君は $ 2,3,4 $ 番目の人を子供、 $ 1,5 $ 番目の人を大人と判定します。 実際には $ 2,4 $ 番目の人が子供、 $ 1,3,5 $ 番目の人が大人であるので、このとき、$ 1,2,4,5 $ 番目の合計 $ 4 $ 人に対して正しく判定できています。 よって、$ f(50)=4 $ です。 $ 5 $ 人全員に対して正しく判定できるような $ X $ は存在しないのでこのときが最大です。よって、$ 4 $ を出力します。 ### Sample Explanation 2 例えば、$ X=10 $ とすると最大値 $ f(10)=3 $ を達成します。 全員が大人、または全員が子供である可能性もあることに注意してください。 ### Sample Explanation 3 例えば、$ X=55 $ とすると最大値 $ f(55)=4 $ を達成します。 同じ体重の人が複数人存在する可能性もあることに注意してください。