Codeforces Round #357 (Div.2)
はい。
http://codeforces.com/contest/681
A. A Good Contest
ざっくりと大意
・Codeforcesでは2400以上が赤、2200以上2400未満がオレンジである。
・赤い人がコンテスト後に更にレーティングが上がっているか??
Python2
n=int(raw_input()) ans=chk=0 for i in range(n): name,before,after=map(str,raw_input().split()) if int(before)>=2400 and int(before)<int(after): print 'YES' exit() print 'NO'
複数のクエリ中で一人でも上がってればYES、そうでなければNOなのはサンプルからわかるようになっているので特に引っかかるトコはないはず。と思ったら赤が2400以上か、2400より大きいかの読み違えでHack祭になっていた模様。。
B. Economy Game
ざっくりと大意
・1234567,123456,1234からnをつくれるか。
Python2
#!/usr/bin/env python # -*- coding: UTF-8 -*- n=int(raw_input()) a,b,c=1234567,123456,1234 for i in range(811): tmp=n-a*i for j in range(tmp/b+1): if (tmp-b*j)%c==0: print 'YES' exit() print 'NO'
探し方としては除いていって0に出来るかという感じで探した。ループ回数の上限が大きいようにみえるけど、公約数とかでうまく処理されて上限まで行ってないと思う。
C. Heap Operations
ざっくりと大意
・heapキューのような処理で足りない命令を捕捉する。
・insertはキューに追加する。getMinは最小値の確認。removeMinはキューから最小値を1つ除く。
Python2
#TLE 解決できず import heapq n=int(raw_input()) l=[] ans=[] for i in xrange(n): q=raw_input() if q[0]=='r' and len(l)==0: ans.append('insert 1') ans.append(q) elif q[0]=='r': heapq.heappop(l) ans.append(q) elif q[0]=='i': ans.append(q) t=int(q.replace('insert ','')) heapq.heappush(l,t) else: t=int(q.split()[1]) if t not in l: ans.append('insert '+str(t)) heapq.heappush(l,t) while l[0]!=t: ans.append('removeMin') heapq.heappop(l) ans.append('getMin '+str(t)) print len(ans) for i in ans: print i
TLE解決できず。。。他にPython2で通してる人たちもTLEギリギリっぽいが違いがよく分からず。。。