AT_past202004_g ストリング・クエリ
Description
[problemUrl]: https://atcoder.jp/contests/past202004-open/tasks/past202004_g
文字列 $ S $ に対して $ Q $ 回の操作を行います。初め文字列 $ S $ は空文字列です。
$ i $ 回目の操作の種類は整数 $ T_i\ (1\ \leq\ i\ \leq\ Q) $ で表され、その内容は以下の通りです。
- $ T_i\ =\ 1 $ のとき
- 英小文字 $ C_i $ と整数 $ X_i $ が与えられる。$ S $ の末尾に $ C_i $ を $ X_i $ 文字追加する。
- $ T_i\ =\ 2 $ のとき
- 整数 $ D_i $ が与えられる。$ S $ の先頭から $ D_i $ 文字を削除する。$ S $ の長さが $ D_i $ 文字以下である場合は、$ S $ は空文字列となる。 そして、この操作で`a`, `b`, `c`, $ \cdots $ `z` の各文字が何文字削除されたかを求める。それぞれ $ del_a,\ del_b,\ \cdots,\ del_z $ 文字削除された場合、$ {del_a}^2\ +\ {del_b}^2\ +\ \cdots\ +\ {del_z}^2 $ を出力する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ Q $ $ Query_1 $ $ : $ $ Query_Q $
$ 2 $ 行目から $ Q+1 $ 行目の $ Query_i $ は以下の $ 2 $ つのいずれかである。
> $ 1 $ $ C_i $ $ X_i $
$ T_i\ =\ 1 $ として操作を行うことを表す。
> $ 2 $ $ D_i $
$ T_i\ =\ 2 $ として操作を行うことを表す。
Output Format
$ T_i\ =\ 2 $ である操作それぞれに対して順番に、各文字種の削除された文字数の $ 2 $ 乗の和を出力せよ。
Explanation/Hint
### 注意
この問題に対する言及は、2020年5月2日 18:00 JST まで禁止されています。言及がなされた場合、賠償が請求される可能性があります。
試験後に総合得点や認定級を公表するのは構いませんが、どの問題が解けたかなどの情報は発信しないようにお願いします。
### 制約
- $ 1\ \leq\ Q\ \leq\ 10^5 $
- $ T_i\ =\ 1 $ または $ 2 $
- $ C_i $ は英小文字
- $ 1\ \leq\ X_i\ \leq\ 10^5 $
- $ 1\ \leq\ D_i\ \leq\ 10^5 $
- $ Q,\ T_i,\ X_i,\ D_i $ は整数
- $ T_i\ =\ 2 $ の操作が $ 1 $ つ以上存在する
### Sample Explanation 1
初め $ S $ は空文字列です。 - $ 1 $ 回目の操作の後、$ S $ は `aaaaa` となります。 - $ 2 $ 回目の操作の後、$ S $ は `aa` となります。`a` が $ 3 $ 文字削除され、他の文字は削除されていません。 - $ 3 $ 回目の操作の後、$ S $ は `aatttttttt` となります。 - $ 4 $ 回目の操作の後、$ S $ は `aattttttttcccccccccc` となります。 - $ 5 $ 回目の操作の後、操作前の $ S $ の長さは $ 20 $ であるので、$ S $ は空文字列となります。 `a` が $ 2 $ 文字、`c` が $ 10 $ 文字、`t` が $ 8 $ 文字削除されています。 - $ 6 $ 回目の操作の後、$ S $ は空文字列のままです。どの文字も削除されていません。 よって、$ 2 $ 回目の操作では $ 3^2\ +\ 0^2\ +\ \cdots\ +\ 0^2\ =\ 9 $ を、$ 5 $ 回目の操作では $ 2^2\ +\ 10^2\ +\ 8^2\ =\ 168 $ を出力してください。 $ 6 $ 回目の操作ではどの文字も削除されていないので、$ 0 $ を出力してください。
### Sample Explanation 2
初め $ S $ は空文字列です。 - $ 1 $ 回目の操作の後、$ S $ は `xxxxx` となります。 - $ 2 $ 回目の操作の後、$ S $ は `xxxxxyyyyyyyy` となります。 - $ 3 $ 回目の操作の後、$ S $ は `yyyyyy` となります。`x` が $ 5 $ 文字、`y` が $ 2 $ 文字削除されています。$ 5^2\ +\ 2^2\ =\ 29 $ です。 - $ 4 $ 回目の操作の後、$ S $ は `yyyyyyzzzzzzzz` となります。