キーエンス プログラミング コンテスト 2020
はい。
https://atcoder.jp/contests/keyence2020
ooo--- 935(+21) Cが400点問題なので3問のみでも痛くはなかったはずです。
A - Painting
PyPy3
h=int(input()) w=int(input()) n=int(input()) x=max(h,w) print((n+x-1)//x)
行、列大きい方で繰り上げになるようにして割り算。
B - Robot Arms
PyPy3
n=int(input()) d=[] for i in range(n): x,l=map(int,input().split()) d.append((x-l,x+l)) d.sort() ans=1 chk=d[0][1] for i in d: if i[0]>=chk: ans+=1 chk=i[1] else: chk=min(chk,i[1]) print(ans)
ちょっとすぐには方針が立たなかった。あとPCがフリーズで再起動して時間をややロスしました。
受取時に座標xから正負の方向に腕を伸ばす幅を計算してリストに追加します。ソートします。順番に見ていって重なりがないときは1つ追加出来ます。重なりがあるときは正の側の値が小さい方を選択したことにします。繰り返し順番に見ていきます。
C - Strawberry Cakes
PyPy3
x=10**9 n,k,s=map(int,input().split()) if s<x: ans=[s]*k+[s+1]*(n-k) else: ans=[s]*k+[s-1]*(n-k) print(*ans)
サンプル1を見てSをK個置いてよさそうだなと思う。制約を勘違いしたり瞑想したりする。間違いに気づいて書き直してAC。SをK個という方針はほぼ合ってて、適当に置いてたs+1が109 に +1 してしまうと制約から外れてしまうのがWAの原因でした。3WAしてからようやくAC。