どんどん行きます。
http://arc006.contest.atcoder.jp/assignments
A - 宝くじ
宝くじのあたり番号と自分の番号で決まる当選順位を答える。
地道に分岐したけど、もっと賢い方法もあるのかな。
E=list(raw_input().split(" ")) B=raw_input() L=list(raw_input().split(" ")) mat=0 bo=0 for i in range(0,6): if L[i] in E: mat += 1 if L[i] == B: bo += 1 if mat==6: print 1 elif mat==5 and bo>0: print 2 elif mat==5: print 3 elif mat==4: print 4 elif mat==3: print 5 else: print 0
B - あみだくじ
あみだくじとその当たりの位置が与えられるので、当たりを引ける開始位置を答える。
あみだくじの横線があるところで位置を入れ替えていけばよい。
N,L=map(int,raw_input().split(" ")) T=range(0,N) for a in range(0,L): S=raw_input() for i in range(0,N-1): if S[i*2+1]=='-': T[i],T[i+1]=T[i+1],T[i] S=raw_input() for i in range(0,N): if i*2 < len(S) and S[i*2]=='o': print(T[i]+1)
C - 積み重ね
一連の段ボールに対し、各段ボールは床または自分以上の重さの段ボールに重ねられる場合、最小の段ボールの山の数を答える。
各段ボールに対し、その段ボールを置ける最軽量の既存の段ボールに重ねていけばよい。
N=input() Q=[] for i in range(N): w=input() ok=0 for j in range(len(Q)): if w<=Q[j]: ok=1 Q[j]=w break if ok==0: Q.append(w) Q.sort() print(len(Q))
まとめ
リスト要素のswapが簡単にできていいね。