AtCoder Regular Contest 041 参加記

はい。 ox--
http://arc041.contest.atcoder.jp
A問題のみAC。B問題は処理方法にミスがあってWA、C,Dは手付かずで終わった。。

A - コインの反転

python

x,y=map(int,raw_input().split())
k=int(raw_input())
if y>=k:
    print x+k
else:
    print x-(k-y)+y

kがyより大きい場合の処理方法の式が即時には思いつかなかったので数分掛けてしまった。。

B - アメーバ

python

n,m=map(int,raw_input().split())
boad=[[] for i in range(n)]
ans=[[0]*m for i in range(n)]
for i in range(n):
    s=raw_input()
    for j in s:
        boad[i].append(int(j))
 
for i in range(n-1):
    for j in range(m-1):
        if boad[i][j]!=0:
            chk=boad[i][j]
            boad[i][j]=0
            boad[i+1][j-1]-=chk
            boad[i+1][j+1]-=chk
            boad[i+2][j]-=chk
            ans[i+1][j]=chk
for i in ans:
    print ''.join(map(str,i))

コンテスト中は入力で与えられる配列内にアメーバの初期位置を書き込んで、しかもその値を移動前後で区別させないという間抜けなWAだった。。コンテスト後に解説を見て、別の配列にして書き直したら普通にACだったので勿体無かった。。

C - ウサギ跳び

終わってから問題と解説読んでみれば方針はごく単純なようでL,Rの向きによって、いくつかの区間を個別に取り出す書き方に悩むのでまた後で。。