今年も,全国プログラミング選手権大会の時期がやってきた.全国大会の参加権を賭けた地区大会は, 2n チームが1 対1 の勝ち残り式トーナメント方式で対決する.
トーナメント表にはチーム番号 0, . . . 2n − 1 が割り振られており,1 回戦から n 回戦までの対決手順は次の通りである.
n 回戦まで終わると,各チームの順位は 2n − (そのチームが勝った回数) 位で確定する.なお,この対決には引き分けが存在しないため,対決したチームのいずれか一方が勝ち,もう一方が負ける.
晴れて地区大会の代表に選ばれた私達は,他の地区大会の結果をマネージャーに調べてもらうことにした.ここで調べてもらった結果が「マネージャーから受け取った順位表」であった.「マネージャーから受け取った順位表」をより詳細に説明すると,長さ 2n の数列で i ( 0 ≤ i ≤ 2n − 1 ) 番目の要素にチーム番号 i のチームの順位が書かれているものである.
だが,「マネージャーから受け取った順位表」には同じ順位が大量に並んでいた!トーナメントのルール上,同じ順位が大量に並ぶなんてありえないはずだ.そこで,「マネージャーから受け取った順位表」を「無矛盾な順位表」にするために順位を変更するチーム数の最小値を計算してどのくらい順位表が間違っているかをマネージャーに教えてあげよう.「無矛盾な順位表」とは,順位が確定したトーナメントの結果として起こりうる順位表のことを表す.
入力には,「マネージャーから受け取った順位表」が以下の形式で与えられる.
n m a0 a1 . . . am b0 b1 . . . bm−1
「マネージャーから受け取った順位表」を「無矛盾な順位表」にするために順位を変更するチーム数の最小値を1 行に出力せよ.
1 1 0 2 1
1
参加チーム数が2 の「無矛盾な順位表」は,{"チーム番号 0 のチームの順位", "チーム番号 1 のチームの順位"} として {1, 2} と {2, 1} の2 通りがある.順位表 {2, 2} を「無矛盾な順位表」に修正するためには,いずれかのチームの順位を 1 に変更しなければならない.
2 3 0 1 2 4 0 1 2
2
2 3 0 1 3 4 0 2 1
0
4 5 0 1 2 4 8 16 0 1 2 3 4
10