A – Transfer
1 2 |
a,b,c = map(int, input().split()) print(c-(a-b)) |
C – Build Stairs
方針
・単調非減少とあるので、数列の左から右に向かって数字が減らなければよい
→途中で同じ数字がある、全て同じ数字、右に向かって増加する場合は条件に当てはまる
・各マスの高さはHとして最大10**9個与えられる。これをリストで受け取った場合、Hを全て線形探索してもギリギリ間に合う
・max値を0で初期化後、Hの各要素に対して以下の操作を行う
→現在の最大値よりもHの要素が大きい場合は最大値を更新
→最大値に更新がない場合、最大値がHの現在の要素より2以上大きくないかを判定
→最大値がHの現在の要素より2以上大きい場合は”No”を出力して終了
→Noと出力することなくHに対して判定が終了したら、最後に”Yes”を出力
解答
コード・コメント
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#入力 n = int(input()) H = list(map(int,input().split())) #最大値を0で初期化 max_number = 0 #Hを全探索 for i in range(len(H)): #Hのi番目の要素が最大値よりも大きい場合 if H[i]>max_number: #最大値を更新 max_number=H[i] #最大値の更新がなく、最大値がHのi番目の要素よりも2以上大きい場合 elif max_number - H[i]>1: #Noを出力 print("No") #プログラムを終了 exit() #プログラムを終了せず、Hの全探索が完了したらYesを出力 print("Yes") |
コード
1 2 3 4 5 6 7 8 9 10 |
n = int(input()) H = list(map(int,input().split())) max_number = 0 for i in range(len(H)): if H[i]>max_number: max_number=H[i] elif max_number - H[i]>1: print("No") exit() print("Yes") |
コメント