11827. Робот


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
C++, Java, Pascal, Python

Є \(N\) людей, кожен з яких або дитина, або дорослий. \(I\)-та особа має вагу \(W_i\).

Рядком \(S\) довжини \(N\), що складається з 0 і 1, визначається те, чи є кожна людина дитиною чи дорослим. Якщо \(i\)-й символ \(S\) дорівнює 0, то \(i\)-та особа є дитиною; якщо 1, то \(i\)-та людина доросла.

Роботу на вхід дають дійсне число \(X\). Він вважає людину з вагою менше \(X\) дитиною, а людину з вагою більше або дорівнює \(X\) — дорослою.

Для дійсного значення \(X\) нехай \(f(X)\) буде кількістю людей, яких робот правильно оцінює, чи є вони дітьми чи дорослими.

Знайдіть максимальне значення \(f(X)\) для всіх дійсних значень \(X\).

Обмеження

  • \(1 \leq N \leq 2 \times 10^5\)
  • \(S\) — рядок довжини \(N\), що складається з 0 і 1.
  • \(1 \leq W_i \leq 10^9\)
  • \(N\) і \(W_i\) є цілими числами.

Формат вхідних даних

Перший рядок містить ціле число \(N\)

Другий рядок містить \(S\)

Наступний  рядок містить \(N\) цілих чисел \(W_i\)

Числа у рядках розділяються пропуском.

Формат вихідних даних

У вихідний потік виведіть шукане значення \(f(X)\)

Примітка

До прикладу 1:

Коли роботу дають X=50, це оцінює 2-го, 3-го та 4-го людей як дітей, а 1-го та 5-го як дорослих.

Реально 2-й і 4-й – діти, а 1-й, 3-й і 5-й – дорослі, тому 1-й, 2-й, 4-й і 5-й люди правильно оцінені. Отже, f(50)=4.

Це максимум, оскільки немає X, який би правильно оцінив усіх 5 осіб. Таким чином, має бути виведено 4.

Приклад вхідних даних

5
10101
60 45 30 40 80

Приклад вихідних даних

4

Приклад вхідних даних

3
000
1 2 3

Приклад вихідних даних

3

Приклад вхідних даних

5
10101
60 50 50 50 60

Приклад вихідних даних

4

Коментарі

Ще немає коментарів.