簡単なゲームをしよう。
白い碁石と黒い碁石が横1列に混ざって並べられている。 隣り合った碁石を入れ替えることを1手とし、左側に白い碁石、右側に黒い碁石を集めていく。 全ての白い碁石が全ての黒い碁石よりも左側にある状態になったらゲームは終了である。
実は、このゲームの最小手数はプログラムを書いて簡単に求めることができる。ゲームに飽きてしまったら、ぜひ挑戦してみてくれたまえ。
入力は以下の形式で表される。
D
N1
S11 S12 ... S1N1
N2
S21 S22 ... S2N2
:
ND
SD1 SD2 ... SDND
ここでDはゲームの回数、Niはi回目のゲームにおける碁石の数、Sijはi回目のゲームにおいて左からj番目の碁石の色である。 Sijは0ならば白、1ならば黒を表す。
入力は以下の条件をすべて満たす。
- 1 <= D <= 100
- 1 <= i <= D を満たすすべての整数iについて、
- 1 <= Ni <= 100
- さらに1 <= j <= Niを満たすすべての整数jについて、
- Sijはすべて{0, 1}のいずれか
出力は、各ゲームごとに最小手数を1行で出力せよ。
1
5
1 0 0 1 0
4
説明のため、左の碁石から順に1〜5番と番号をつけることにする。 例えば、1手目で1番と2番、2手目で4番と5番、3手目で2番と3番、4手目で3番と4番を入れ替えることで、白い碁石が全て左側に寄り、黒い碁石が全て右側に寄る。これが最小手順なので、答えは4手となる。
3
8
1 1 0 1 1 0 1 1
3
0 0 1
12
1 0 1 0 1 0 1 0 1 0 1 0
6
0
21