Google Code Jam 2011 Qualification Round A. Bot Trust

Bot Trust

ちょっと面倒だが、指示されたボタンに向かって相手がボタンを押すまで待機、を1秒ごとにシミュレーション。

# coding: utf-8
T = input()
for t in range(T):
    line = raw_input().split()
    op = []
    N = int(line[0])
    for i in range(N):
        op += [(line[i*2+1],int(line[i*2+2]))]
    c = 0
    oo,bo = 0,0     # 実行中の命令
    od,bd = 1,1     # 現在地
    while oo<N or bo<N:
        while oo<N and op[oo][0]!='O': oo+=1
        while bo<N and op[bo][0]!='B': bo+=1
        if oo<N:
            if od<op[oo][1]: od+=1
            elif od>op[oo][1]: od-=1
            elif oo<bo: oo+=1
        if bo<N:
            if bd<op[bo][1]: bd+=1
            elif bd>op[bo][1]: bd-=1
            elif bo<oo: bo+=1
        c += 1
    print "Case #%s: %s" % (t+1,c)