Codeforces Round 603 (Div. 2)
E
Editor
Codeforces
2100
原题
← DF →
翻译中…

The development of a text editor is a hard problem. You need to implement an extra module for brackets coloring in text.

翻译中…

Your editor consists of a line with infinite length and cursor, which points to the current character. Please note that it points to only one of the characters (and not between a pair of characters). Thus, it points to an index character. The user can move the cursor left or right one position. If the cursor is already at the first (leftmost) position, then it does not move left.

翻译中…

Initially, the cursor is in the first (leftmost) character.

翻译中…

Also, the user can write a letter or brackets (either (, or )) to the position that the cursor is currently pointing at. A new character always overwrites the old value at that position.

翻译中…

Your editor must check, whether the current line is the correct text. Text is correct if the brackets in them form the correct bracket sequence.

翻译中…

Formally, correct text (CT) must satisfy the following rules:

翻译中…
  • any line without brackets is CT (the line can contain whitespaces);
  • If the first character of the string — is (, the last — is ), and all the rest form a CT, then the whole line is a CT;
  • two consecutively written CT is also CT.
翻译中…

Examples of correct texts: hello(codeforces), round, ((i)(write))edi(tor)s, ( me). Examples of incorrect texts: hello)oops(, round), ((me).

翻译中…

The user uses special commands to work with your editor. Each command has its symbol, which must be written to execute this command.

翻译中…

The correspondence of commands and characters is as follows:

翻译中…
  • L — move the cursor one character to the left (remains in place if it already points to the first character);
  • R — move the cursor one character to the right;
  • any lowercase Latin letter or bracket (( or )) — write the entered character to the position where the cursor is now.
翻译中…

For a complete understanding, take a look at the first example and its illustrations in the note below.

翻译中…

You are given a string containing the characters that the user entered. For the brackets coloring module's work, after each command you need to:

翻译中…
  • check if the current text in the editor is a correct text;
  • if it is, print the least number of colors that required, to color all brackets.
翻译中…

If two pairs of brackets are nested (the first in the second or vice versa), then these pairs of brackets should be painted in different colors. If two pairs of brackets are not nested, then they can be painted in different or the same colors. For example, for the bracket sequence ()(())()() the least number of colors is $2$, and for the bracket sequence (()(()())())(()) — is $3$.

翻译中…

Write a program that prints the minimal number of colors after processing each command.

翻译中…

Input

翻译中…

The first line contains an integer $n$ ($1 \le n \le 10^6$) — the number of commands.

翻译中…

The second line contains $s$ — a sequence of commands. The string $s$ consists of $n$ characters. It is guaranteed that all characters in a string are valid commands.

翻译中…

Output

翻译中…

In a single line print $n$ integers, where the $i$-th number is:

翻译中…
  • $-1$ if the line received after processing the first $i$ commands is not valid text,
  • the minimal number of colors in the case of the correct text.
翻译中…

Note

翻译中…

In the first example, the text in the editor will take the following form:

翻译中…
  1. ( ^
  2. ( ^
  3. (a ^
  4. (a ^
  5. (ab ^
  6. (ab ^
  7. (ab) ^
  8. (ab) ^
  9. (a)) ^
  10. (a)) ^
  11. (()) ^
翻译中…

样例

Input #1
11
(RaRbR)L)L(
Output #1
-1 -1 -1 -1 -1 -1 1 1 -1 -1 2
InputCopy OutputCopy
Input #2
11
(R)R(R)Ra)c
Output #2
-1 -1 1 1 -1 -1 1 1 1 -1 1
InputCopy OutputCopy
题目信息
题号
1263E
时间限制
1 s
内存限制
256 MB
标签
数据结构
模拟

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。