AtCoder Regular Contest 161 A問題 A Make M
問題
提出解答
問題の概要
長さが奇数である整数列 に対して, 以下を満たすとき, は M 型であるという.
を奇数とする. 長さ の整数列 が与えられる. を適切に並び替えることによって, M 型にすることは可能か?
制約
- は奇数である.
解法
以下は同値である.
- を適切に並び替えると, M 型にすることができる.
- を昇順に並び替えた列を とし, とすると,
(下) ならば (上) は明らかなので, (上) ならば (下) を証明する.
を並び替えることによって, は M 型であるとする. このとき, の奇数項目の最小値を とする.
このとき, の奇数項目に より大きい整数が, の偶数項目に より小さい整数が存在する場合, これら 項は交換しても M 型を保ったままである.
このようにすることで, の奇数項目は全て 以下, 偶数項目が全て 以上にすることができる.
また, このときの に含まれる については以下のうちのどちらかが成り立つ.
- の奇数項目が全て で, の偶数項目は全て より大きい.
- の奇数項目にある の数と の偶数項目にある の数 (要するに にある の数) が 個以下.
どちらの場合にしても, 奇数項目, 偶数項目それぞれ昇順に並び替えることによって, は (下) での操作の結果による並び替えになり, M 型にもなる.