#4292. 机器人小高(Robot Takahashi)

机器人小高(Robot Takahashi)

题目描述

小高是一个机器人。有NN个人,每个人要么是小孩要么是成年人。第ii个人的体重是WiW_i
一个长度为NN的字符串SS由'0'和'1'组成,表示每个人是小孩还是成年人。如果SS的第ii个字符是'0',则第ii个人是小孩;如果是'1',则第ii个人是成年人。
当给小高一个实数XX时,小高会判断体重小于XX的人为小孩,体重大于等于XX的人为成年人。对于一个实数XX,令f(X)f(X)表示小高正确判断是小孩还是成年人的人数。求f(X)f(X)的最大值。

输入格式

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

NN

SS

W1W_1 W2W_2 \cdots WNW_N

输出格式

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

样例

5
10101
60 45 30 40 80
4
3
000
1 2 3
3
5
10101
60 50 50 50 60
4

样例解释

【样例1说明】
当给小高XX=50时,它会判断第2、3、4个人为小孩,第1和第5个人为成年人。
实际上,第2和第4个人是小孩,第1、3和第5个人是成年人,所以第1、2、4和第5个人被正确判断。因此f(50)=4。
这是最大值,因为没有XX能正确判断所有5个人。所以应该输出4。
【样例2说明】
例如,XX=10可以达到最大值f(10)=3。
注意所有人可能都是小孩或都是成年人。
【样例3说明】
例如,X=55可以达到最大值f(55)=4。
注意可能有多个人的体重相同。

数据范围

  • 1N2×1051 ≤ N ≤ 2 × 10^5
  • SS是一个长度为NN的由'0'和'1'组成的字符串
  • 1Wi1091 ≤ W_i ≤ 10^9
  • NNWiW_i都是整数

来源

  • AtCoder ABC257C