Skip to content

Instantly share code, notes, and snippets.

@maehrm
Created March 13, 2026 20:07
Show Gist options
  • Select an option

  • Save maehrm/2a3f1ee5c1d04f8a742cedcb26285fe1 to your computer and use it in GitHub Desktop.

Select an option

Save maehrm/2a3f1ee5c1d04f8a742cedcb26285fe1 to your computer and use it in GitHub Desktop.
N, L, R = map(int, input().split())
A = list(map(int, input().split()))
revA = A[::-1] # 逆順にしておく
# dpl[i]: 左からi番目まで見たときの最小値
# dpr[i]: 右からi番目まで見たときの最小値
dpl = [0] * (N + 1)
dpr = [0] * (N + 1)
for i in range(N):
dpl[i + 1] = min(dpl[i] + A[i], L * (i + 1))
dpr[i + 1] = min(dpr[i] + revA[i], R * (i + 1))
dpr = dpr[::-1]
print(min(x + y for x, y in zip(dpl, dpr)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment