(H[i+1]-H[i]<=-1)
この条件式すごくわかりにくくないですか?
H[i] >= H[i+1] + 1
とかのほうがいいと思いますよ.条件式はなるべく簡潔に,見やすく,できれば負数の比較とかせずに行うのがおすすめです.
本題です.
この問題は「単調非減少にする」というものなので,左は小さくできるだけ小さくするべきですよね?ですので,H[i] == H[i+1]でもH[i]は全然-1できます.というかするべきです.なるべく減算していかないと,正しい結果が得られません.「もっと減算していれば単調非減少にできた」みたいなケースが出てきます.つまり減算は「できるならする」が原則になります.
ここで重要になる,「減算できない場合」です.それはずばり「減算すると左より小さくなる場合」です.つまりH[i-1] > H[i]-1です.逆にH[i-1] < H[i]であるなら減算できます.
あと減算した時点でA[i]より左は変わらないし,A[i+1]は小さくなりこそすれ大きくなることはないので,直後にNoの判定をするべきです.
というわけで自分がACしたのは次のコードです.for文中ではH[i-1]を参照するのでH[0]は先に処理しておきます.
python
1def main():
2 N = int(input())
3 H = [int(x) for x in input().split()]
4 H[0] -= 1
5 for i in range(1, N - 1):
6 if H[i-1] < H[i]:
7 H[i] -= 1
8 if H[i] > H[i+1]:
9 print('No')
10 break
11 else:
12 print('Yes')
13 return
14
15main()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/11 11:40
2019/11/11 11:58