I - Deque Inversion
Ceylon
2
s
1024
MB
100
点
問題文
長さ $N$ の数列 $A = (A_1, A_2, \ldots , A_N)$ があります。
この数列に対して、 $Q$ 個のクエリを与えられた順番に処理し、各クエリ操作後の数列 $A$ の転倒数を出力してください。
クエリは以下の $4$ 種類のいずれかです。
-
1 x
: $A$ の末尾に $x$ を追加する。- より形式的には、 $K = |A|$ とし、 $A = (A_1, A_2, \ldots, A_K)$ を $A = (A_1, A_2, \ldots, A_K, x)$ で置き換える。
-
2
: $A$ の末尾の数を取り除く。- より形式的には、 $K = |A|$ とし、 $A = (A_1, A_2, \ldots, A_K)$ を $A = (A_1, A_2, \ldots, A_{K - 1})$ で置き換える。
-
3 x
: $A$ の先頭に $x$ を追加する。- より形式的には、 $K = |A|$ とし、 $A = (A_1, A_2, \ldots, A_K)$ を $A = (x, A_1, A_2, \ldots , A_K)$ で置き換える。
-
4
: $A$ の先頭の数を取り除く。- より形式的には、 $K = |A|$ とし、 $A = (A_1, A_2, \ldots, A_K)$ を $A = (A_2, A_3, \ldots , A_K)$ で置き換える。
転倒数とは?
数列 $A = (A_1, A_2, \ldots , A_N)$ の転倒数とは、
$1 \leq i < j \leq N$ かつ $A_i > A_j$ を満たす、整数の組 $(i, j)$ の個数です。
制約
- $2 \leq N \leq 10^5$
- $-10^5 \leq A_i \leq 10^5$
- $1 \leq Q \leq 10^5$
- $-10^5 \leq x \leq 10^5$
- 入力はすべて整数
- $A$ の長さが $2$ より小さくなるようなクエリは与えられない
部分点
以下の条件を満たすテストケースにすべて正解したとき、記載された点数が与えられる。
- (10点) $N \leq 100, ~~ Q \leq 100, ~$ クエリは
1 x
か2
のどちらか - (10点) $N \leq 100, ~~ Q \leq 100$
- (20点) $N \leq 2 \times 10^4, ~~ Q \leq 100$
- (60点) 追加の制約はない
入力
入力は以下の形式で標準入力から与えられる。
$N$
$A_1$ $A_2$ $\ldots$ $A_N$
$Q$
$\mathrm{query}_1$
$\mathrm{query}_2$
$\vdots$
$\mathrm{query}_Q$
各クエリ $\mathrm{query}_i$ は以下に示す $4$ つの形式のいずれかである。
$1$ $x$
$2$
$3$ $x$
$4$
出力
$Q$ 行出力せよ。
$i$ 行目には、 $i$ 番目までのクエリに対して操作を行った数列 $A$ の、転倒数を出力せよ。
入力例 1
4
20 24 3 30
3
2
2
1 330
出力例 1
2
0
0
はじめ、 $A = (20, 24, 3, 30)$ です。
- 1つ目のクエリ
2
の後、 $A = (20, 24, 3)$ となり、この数列の転倒数は $2$ です。 - 2つ目のクエリ
2
の後、 $A = (20, 24)$ となり、この数列の転倒数は $0$ です。 - 3つ目のクエリ
1 330
の後、 $A = (20, 24, 330)$ となり、この数列の転倒数は $0$ です。
このサンプルは部分点1の制約を満たします。
入力例 2
7
3 1 -4 1 5 -9 -2
4
1 0
4
3 0
2
出力例 2
17
11
14
11
このサンプルは部分点2の制約を満たします。