ABC165 C Python で解く
ABC165 C Python
C - Many Requirements
少し難しめかもしれませんが、Python であれば itertools の combinations_with_replacement という関数を使うと、重複を含む組み合わせのシーケンスが作れます。
実装は、条件を満たすDの総和をリストに追加していき、最後に最大値をとって出力しました。数列 A を変えるごとに総和を毎回比較しても良いでしょう。
実装は↓のようになりました。
from itertools import combinations_with_replacement as cbw n, m, q = map(int, input().split()) lst = [list(map(int, input().split())) for _ in range(q)] ans = [] for seq in cbw(range(1,m+1), n): d_sum = 0 for i in range(q): a, b, c, d = lst[i] a -= 1 b -= 1 if seq[b]-seq[a] == c: d_sum += d ans.append(d_sum) ans = max(ans) print(ans)