M-SOLUTIONS プロコンオープン 2020

はい。
https://atcoder.jp/contests/m-solutions2020
oooo-- 840(+31) D問題まで。辛うじて茶色回避。

A - Kyu in AtCoder

PyPy3

print(abs(int(input())-2199)//200)

コンテスト中はif8分岐しました。流石にソレをここに貼るのはちょっと。200毎に級が変わるのでそれでなんとか。

B - Magic 2

PyPy3

a,b,c=map(int,input().split())
d={"a":a,"b":b,"c":c}
for i in range(int(input())+1):
    if d["a"]<d["b"]<d["c"]:
        print("Yes")
        exit()
    elif d["a"]>=d["c"]: d["c"]*=2
    elif d["a"]>=d["b"]: d["b"]*=2
    elif d["b"]>=d["c"]: d["c"]*=2
print("No")

真に大きいに気を付けましょう。B,Cが小さかったら2倍にして。K回以内にA<B<Cに出来るかどうか。

C - Marks

PyPy3

n,k=map(int,input().split())
a=[int(i) for i in input().split()]
for i in range(n-k):
    if a[i]<a[i+k]: print("Yes")
    else: print("No")

累積とか合計とか気にする必要ないと思います。 古いテスト×共通期間のテスト と 共通期間のテスト×新しいテスト の比較なので古いテストと新しいテストだけ比較すれば大丈夫だと思います。

D - Road to Millionaire

PyPy3

n=int(input())
a=[int(i) for i in input().split()]
a.append(0)
x,y=1000,0
for i in range(n):
    if a[i]>=a[i+1]:
        x+=y*a[i]
        y=0
    else:
        y+=x//a[i]
        x=x%a[i]
print(x)

証明はないです。販売手数料とかはありません。明日の株価が今日以下なら今日の手持ちは全て売却して明日のために現金を用意します。明日の株価が今日より大きいなら手持ちの現金で今日買えるだけ買います。最後には勝手に全て現金になるように株価0円を末尾に追加して処理してます。
E問題以降はあとで