AtCoder Beginner Contest 136
はい。
https://atcoder.jp/contests/abc136
ooo--- 934(-13)でした。ダメです。
A - Transfer
PyPy3
a,b,c=map(int,input().split()) print(max(0,c-(a-b)))
容器1に溢れないように入れる。または全部使っても容器1が満タンにならない場合があるので計算がずれないように。
B - Uneven Numbers
PyPy3
n=int(input()) if n==100000: print(90909) elif n<100: print(min(9,n)) elif n<1000: print(9+(n-99)) elif n<10000: print(909) else: print(909+(n-9999))
めっちゃ必死に書いたんですが1からnまでforで回しながらstrでキャストして文字列の長さを見て〜で大丈夫だったそうです。辛い。
C - Build Stairs
PyPy3
n=int(input()) h=[int(i) for i in input().split()] t=h[0]-1 for i in range(1,n): if t>h[i]: print("No") exit() elif t<h[i]: h[i]-=1 t=h[i] print("Yes")
左から見て下げられる箇所は下げる。非減少がダメになったら即No。最後まで完走したらYesで大丈夫だと思います。
D - Gathering Children
PyPy3
s=input() x=len(s) ans=[0]*x chk=[0,0] f=0 for i in range(x): if s[i]=="R": chk[i%2]+=1 if s[i]=="L": if i%2: ans[i-1]+=chk[0] ans[i]+=chk[1] else: ans[i]+=chk[0] ans[i-1]+=chk[1] chk=[0,0] chk=[0,0] for i in range(x-1,-1,-1): if s[i]=="L": chk[i%2]+=1 if s[i]=="R": if i%2: ans[i+1]+=chk[0] ans[i]+=chk[1] else: ans[i]+=chk[0] ans[i+1]+=chk[1] chk=[0,0] print(*ans)
全てがRLの箇所に集まります。時間中にはACしませんでした。左からRだけ見るのと、右からLだけ見るのに分けて処理しています。まとめてやろうとして上手く行かない時には分割するのとても大事と学びました。解説はまだあまりよく読んでいません。