Official
B - 水やり当番 / Watering Duty Editorial
by
B - 水やり当番 / Watering Duty Editorial
by
sounansya
Editorial for printing
\(D= D_1N+D_2\) \((0 \le D_2< N)\) とします。つまり、\(D\) を \(N\) で割った商とあまりをそれぞれ \(D_1,D_2\) とします。
すると、\(N\) 人は全員最低でも \(D_1\) 回は水やりをします。したがって、答えは問題の \(D\) を \(D_2\) に置き換えた問題に対する答えに \(D_1\times \sum_i A_i\) を足した値と一致します。
問題の \(D\) を \(D_2\) に置き換えた問題は愚直に for 文などを使って求めることができます。
n, d, s = map(int, input().split())
s -= 1
a = list(map(int, input().split()))
ans = d // n * sum(a)
d %= n
for i in range(d):
ans += a[(s + i) % n]
print(ans)
posted:
last update:
