Problem C: Bitset I - Bit Mask

"
Time Limit $5$ 秒/Second(s) Memory Limit $512$ 兆字节/Megabyte(s)
提交总数 $38$ 正确数量 $16$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签 STL

Bit Mask

それぞれがONまたはOFFであるn個のフラグで決定される「状態」は、0,1,…,n−1 番目のフラグを1(ON)または0(OFF)で表した、1つのビット列で表すことができます。 ビット列は各桁が0または1である2進数として表されるため、状態は対応する1つの10進数の整数値として管理することができます。

 また、マスクは特定のビットをONにしたビット列で、操作対象のビット列に適用することで、複数のフラグを同時にON/OFFしたり、特定のパタンのフラグの状態を抽出/除外したい場合などに用います。

 64個のフラグからなる状態を管理するビット列に対して、あらかじめ与えられたいくつかのマスクを用いた以下の種類の操作を行ってください。ただし、初期状態でビット列の全てのフラグはOFFになっているものとします。

 test(i): i番目のフラグの状態がONの場合は1、OFFの場合は0を出力する

 set(m): 指定されたマスクが表す部分のフラグをまとめてONにする

 clear(m): 指定されたマスクが表す部分のフラグをまとめてOFFにする 

flip(m): 指定されたマスクが表す部分のフラグをまとめて反転する 

all(m): 指定されたマスクが表す部分の全てのフラグがONになっている場合1、なっていない場合0を出力する 

any(m): 指定されたマスクが表す部分のいずれかのフラグがONになっている場合1、なっていない場合0を出力する

none(m): 指定されたマスクが表す部分の全てのフラグがOFFになっている場合1、なっていない場合0を出力する

count(m): 指定されたマスクが表す部分のONになっているフラグの数を出力する 

val(m): 指定されたマスクが表す部分の整数値を出力する

入力は以下の形式で与えられます。

mask0 

mask1

 : 

maskn−1 

query1

 query2 

queryq

 n はマスクの数を表す。各maski はi番目のマスクのフラグの状態を表し、それぞれ以下の形式で与えられる。

 k b0 b1 ... bk

 kはONになっているビットの数を表し、続くk個の整数bjは、bj番目のビットがONになっていることを示す。

 各クエリqueryiはi番目のクエリを表し、

 0  i 

または 

1 m 

または 

2  m 

または 

3  m 

または

 4  m 

または 

5  m 

または 

6  m

 または 

7  m 

または 

8  m

 の形式で与えられます。最初の数字0, 1,...,8 は操作の種類を示し、それぞれtest(i), set(m), clear(m), flip(m), all(m), any(m), none(m), count(m), val(m) を表します。

各test, all, any, none, count, val操作ごとに、操作結果を1行に出力してください。
3
3 0 1 3
1 3
3 0 1 2
8
1 0
2 1
3 1
4 2
5 2
6 2
7 2
8 2
0
1
0
2
3

1≤ n≤ 10

1≤ k≤ 64 

1≤ q≤ 200,000

0≤ i<  64 

0≤ m