AGC053 B - Taking the middle (700)
カードを左半分と右半分で分けると、高橋君が左から取ると青木君が右から、高橋君が右から取ると青木君は左から1枚取ることが分かる
中央$ 2N枚から最低$ N枚以上青木君はカードを取ることになる
以下の方法で構築できた
$ 1 \le i \le Nについて$ i枚目と$ 2N-i+1枚目をペアとする
それぞれのペアについて価値が大きい方を高橋君に、小さい方を青木君に渡す
後ろのペアから以下を行う
優先度付きキューに青木君が持っている値を追加する
高橋君の持っている方の値がキューのトップより小さい場合、それらを交換する
$ N回優先度付きキューに追加するので$ O(N \log N)