AtCoder Beginner Contest 127
はい。
https://atcoder.jp/contests/abc127
oooo-- 942(+14)でした。無駄にWAしたし、そもそも解き終わったのも遅いけど4完でこのパフォはキツいですね。
A - Ferris Wheel
PyPy3
a,b=map(int,input().split()) print(b if a>12 else b//2 if a>5 else 0)
場合分けして計算する。
B - Algae
PyPy3
r,d,x=map(int,input().split()) for i in range(10): x=r*x-d print(x)
問題文のいいなりになって計算して出力する。
C - AB Substrings
PyPy3
n,m=map(int,input().split()) d=[1,n] for i in range(m): l,r=map(int,input().split()) d[0]=max(d[0],l) d[1]=min(d[1],r) print(max(0,(d[1]-d[0]+1)))
通過出来るカードの情報を適当に更新する。適当に更新して最後に0件である場合を考慮して出力。コンテスト中は無駄に2WAしました。。
D - Integer Cards
Python3
import heapq n,m=map(int,input().split()) a=[int(i) for i in input().split()] d={} l,q=[],[] for i in a: if i in d: d[i]+=1 else: d[i]=1 for i in d: heapq.heappush(q, i) for i in range(m): b,c=map(int,input().split()) l.append((c,b)) l.sort(reverse=True) for c,b in l: while b: if len(q)==0 or c<=q[0]: break x=min(b,d[q[0]]) if c in d: d[c]+=x else: d[c]=x b-=x d[q[0]]-=x if d[q[0]]==0: heapq.heappop(q) ans=0 for i in d: ans+=i*d[i] print(ans)
コンテスト中はもう少し長いコードでした。b,cを受け取って逐次更新の処理してました。更新の処理するのに全体で最小の数がいくつかの情報が必要でappendしてsortしてたらTLEしました。サンプル1を見て後でまとめて大きい方から処理でも良さそうな気はしてましたがソレはあまりTLEと関係なさそう、あからさまに怪しいのは何回もsort()をしてるせいっぽいかな??
sort()を避けるのにhaepq使えば何回もsort()しないでも最小の値を取り出せるはずと思い出して、久しぶりだったので使い方をググって書き直してACしました。
それでコンテスト後に後でまとめて処理方針で書き直しました。