エイシングプログラミングコンテスト2022 (AtCoder Beginner Contest 255) E - Lucky Numbers (500)
$ A_0 = 0として仮の配列を作る
$ A_0を1増やすと偶数番目の要素の値が1増え、奇数番目の要素の値が1減る
減らす場合は逆
偶数番目時数番目で分けてそれぞれで各値の出現回数を記録する
配列の各$ A_iと各$ X_jで以下を行う
$ A_i=X_jとなるように$ Aの要素を決める
この時に各$ M_kが配列内で何度出現するかは配列内で$ X_k \pm (a_i - x_j)が何度出現するかで求められる
符号は偶数か奇数かによって決まる
この中での最大値が答え
各要素毎に各$ Xを試してその中で各$ Xの出現回数を確認するので$ \mathcal{O}(NM^2)