加算された数列の最大値

#お題

N 個の整数 a_1, a_2, ..., a_N が与えられます。
a_i に i を足したとき、a_1 , ... , a_N の最大値を出力してください。

 

 

#入力

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 1 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。

 

 


#出力

a_i に i を足したとき、a_1 , ... , a_N の最大値を出力してください。

 

 

 


#コード

n = int(input())
a = [int(x) for x in input().split()]

b = []
cnt = 1
for i in a:
    b.append(i+cnt)
    cnt += 1

print(max(b))

 

 

 


#参考

N = int(input())
a = list(map(int, input().split()))

ans = 0
for i in range(N):
    ans = max(ans, a[i] + (i + 1))

print(ans)
  • a_i に i を足す際、配列は 0 番目から数えることに注意して足してください。
  • a[i] += i としてしまうと、a[0] ~ a[N-1] に 1 ~ n をそれぞれ足すはずが、a[1] ~ a[N] に 1 ~ n がそれぞれ足されてしまいます。(さらに、a[N] は配列外参照になってしまいます。)