M-SOLUTIONS プロコンオープン 2020に参加しました

最近のAtCoderはABCが少ないですね!
ということで、企業コンに参加
https://atcoder.jp/contests/m-solutions2020/tasks


Cまでは解けましたが、Dで躓き時間切れ
また復讐じゃぁ・・

A. Kyu in AtCoder
何かきれいにできるか。。。と画策するも、特に思い浮かばず。
そのまま条件をべた書きして終わり

a = int(input())
if 400 <= a and a <= 599:
    print(8)
elif 600 <= a and a <= 799:
    print(7)
elif 800 <= a and a <= 999:
    print(6)
elif 1000 <= a and a <= 1199:
    print(5)
elif 1200 <= a and a <= 1399:
    print(4)
elif 1400 <= a and a <= 1599:
    print(3)
elif 1600 <= a and a <= 1799:
    print(2)
elif 1800 <= a and a <= 1999:
    print(1)

B. Magic 2
試行回数も多くなかったので、そのままfor文で回して解きました
一部条件ミス(等号入れ忘れ)してしまったのが痛かった

A, B, C = map(int, input().split())
K = int(input())
for i in range(K):
  if A >= B:
    B *= 2
  elif B >= C:
    C *= 2
  #print(i, A, B, C)
if A < B and B < C:
  print("Yes")
else:
  print("No")

D. Road to Millionaire
これは一部がWAとなってしまい、提出できませんでした
自分の脳内ではいい感じにいってたんだけどなぁ・・・
こうやって一部のテストがうまくいかなかった場合って、大抵解ききれない・・・
何かうまい手はあるのかしら(限界値、境界値あたりを考えてきちんと自分でテストする?)
ダメだったコードを乗せときます

N = int(input())
A = list(map(int, input().split()))
K = [0]*N
s = 1000
kab = 0

if A[0] < A[1]:
  K[0] = -1
elif A[0] > A[1]:
  K[0] = 1
for i in range(1, N):
  if A[i-1] < A[i]:
    K[i] = 1 # 1は最高値
    if K[i-1] == 1: 
      K[i-1] == 0
  elif A[i-1] > A[i]:
    K[i] = -1 # -1は最低値
    if K[i-1] == -1:
      K[i-1] == 0
#print(K)
M = list(K)
for i in range(1, N):
  #print(-i, K[-i])
  if K[-i] == 1:
    break
  elif (K[-i] == -1):
    K[-i] = 0

#print(K)
  
for i in range(N):
  if K[i] == -1:
    kab = s // A[i]
    s -= A[i]*kab
  elif K[i] == 1:
    s += A[i]*kab
    kab = 0
print(s)
  


今回はとりあえずCまで解けたので、よしとします
あぁ、でも色々覚えていかないといつまでもこのスコアのままだなぁ・・・どうしよう

以上