▼考え方:
考え方は、前問「最長増加連続部分列」とほぼ同じです。
異なる点は、以下の2点です。
①リストa[0]に201を代入したこと(201は身長の最大値より大きい値)。人が1(n=1)のときでも計算できるようにするためです。
②人a_i-1と人a_iに逆背の順が成立するならば、dp[i] = dp[i-1] + 1とした点。(dp[i-1]には、人a_i-1以前において、逆背の順が成立した人数が格納されている。)
▼コード:
########## 処理0(準備) インプット,リスト定義など ###########
n = int(input())
a = [0]*(n+1)
a[0] = 201
########## 処理1 漸化式の定義、計算、出力 ##########
dp = [0]*(n+1)
for i in range(1,n+1):
a[i] = int(input())
for i in range(1,n+1):
if a[i-1] >= a[i]:
dp[i] += dp[i-1] + 1
else:
dp[i] = 1
print(max(dp))
▼気づいたこと:
解答コード例をみるとdp[0]=1でした。私はdp[0]=201としたため、考え方が異なるかもしれません。確認したいと思います。