QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 256 MB Total points: 100

#23831. Вежа JOIOI

Statistics

Умова задачі

«Вежа JOIOI» — це гра для $1$ гравця, у якій використовуються диски.

У цій грі використовується кілька дисків, на кожному з яких написано один із символів J, O або I. Діаметри всіх дисків попарно різні, і на початку гри ці диски складені в стос знизу вгору в порядку спадання діаметра. Використовуючи ці диски, ви хочете скласти якомога більше міні-веж JOIOI. Міні-вежа JOIOI складається з $3$ дисків, на яких при читанні в порядку зростання діаметра дисків читається JOI або IOI. Проте один і той самий диск не можна використовувати $2$ або більше разів.

Figure

Рисунок: Із JOIOII можна скласти $2$ міні-вежі JOIOI

Завдання

Символи, написані на підготовлених дисках, задані в порядку зростання діаметра дисків у вигляді рядка $S$ довжини $N$. Напишіть програму, яка знаходить максимальну кількість міні-веж JOIOI, які можна скласти за допомогою цих дисків.

Обмеження

  • $1 \le N \le 1000000$: довжина рядка $S$.

Вхідні дані

Зчитайте такі дані зі стандартного потоку введення.

  • У $1$-му рядку записано ціле число $N$. $N$ означає довжину рядка $S$.
  • У $2$-му рядку записано рядок $S$.

Вихідні дані

Виведіть у стандартний потік виведення в $1$ рядку ціле число — максимальну кількість міні-веж JOIOI, які можна скласти.

Підзадачі

  • Для $10\%$ балів у тестових даних виконується $N \le 15$.
  • Для $30\%$ балів у тестових даних виконується $N \le 50$.
  • Для $50\%$ балів у тестових даних виконується $N \le 3000$.

Приклад 1

Введення

6
JOIIOI

Виведення

2

JOIIOI містить JOI та IOI по $1$ разу як підпослідовності, тому можна скласти $2$ міні-вежі JOIOI.

Приклад 2

Введення

5
JOIOI

Виведення

1

Хоча рядок містить JOI та IOI як підпослідовності, один символ не можна використовувати $2$ або більше разів, тому їх не можна виділити одночасно.

Приклад 3

Введення

6
JOIOII

Виведення

2

Цей приклад відповідає прикладу з умови задачі.

Приклад 4

Введення

15
JJOIIOOJOJIOIIO

Виведення

4

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.