AT_past202010_k 転倒数

Description

[problemUrl]: https://atcoder.jp/contests/past202010-open/tasks/past202010_k あなたは $ a_1 $ から $ a_K $ の $ K $ 個の数列を持っています。 数列 $ a_i $ の長さは $ n_i $ で、先頭から $ j $ 番目の数は $ a_{i,j} $ です。 あなたはこれらの数列を使って、新しい数列 $ x $ を作ることにしました。 はじめ、$ x $ の長さは $ 0 $ です。 あなたは $ Q $ 回操作を行います。 $ i $ 回目の操作では、$ x $ を $ x $ の末尾に数列 $ a_{b_i} $ を連結したものに置き換えます。 $ x $ の長さを $ |x| $ と書くことにします。 最終的な $ x $ において、$ 1\ \leq\ i\ \ x_j $ の両方を満たすような整数の組 $ (i,j) $ がいくつあるかを求めてください。 これは非常に大きくなりうるので、$ 10^9 $ で割ったあまりを出力してください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ K $ $ n_1 $ $ a_{1,1} $ $ a_{1,2} $ $ \cdots $ $ a_{1,{n_1}} $ $ n_2 $ $ a_{2,1} $ $ a_{2,2} $ $ \cdots $ $ a_{2,{n_2}} $ $ \vdots $ $ n_K $ $ a_{K,1} $ $ a_{K,2} $ $ \cdots $ $ a_{K,{n_K}} $ $ Q $ $ b_1 $ $ b_2 $ $ \cdots $ $ b_Q $

Output Format

最終的な $ x $ における $ 1\ \leq\ i\ \ x_j $ の両方を満たすような $ (i,j) $ の個数を $ 10^9 $ で割ったあまりを出力せよ。

Explanation/Hint

### 注意 この問題に対する言及は、2020/11/8 18:00 JST まで禁止されています。言及がなされた場合、賠償が請求される可能性があります。 試験後に総合得点や認定級を公表するのは構いませんが、どの問題が解けたかなどの情報は発信しないようにお願いします。 ### 制約 - 与えられる入力は全て整数 - $ 1\ \leq\ K,Q\ \leq\ 10^5 $ - $ 1\ \leq\ n_i\ \leq\ 10^5 $ - $ 1\ \leq\ a_{i,j}\ \leq\ 20 $ - $ 1\ \leq\ b_i\ \leq\ K $ - $ \sum_{i=1}^{K}\ n_i\ \leq\ 3\ \times\ 10^5 $ ### Sample Explanation 1 \- $ x $ ははじめ空です。 - $ 1 $ 回目の操作により、$ x $ が $ x $ と $ (1,3,2) $ を連結した数列である $ (1,3,2) $ に置き換えられます。 - $ 2 $ 回目の操作により、$ x $ が $ x $ と $ (5,4) $ を連結した数列である $ (1,3,2,5,4) $ に置き換えられます。 - $ 1\ \leq\ i\ \ x_j $ の両方を満たす $ (i,j) $ の組は $ (2,3) $ と $ (4,5) $ の $ 2 $ つです。