読者です 読者をやめる 読者になる 読者になる

paizaオンラインハッカソン5 エン修羅 マンガ版 俺(エンジニア)の許嫁と幼なじみが修羅場すぎる POH5

はい。
なんか開催中でもblogに自分の回答載せてしまっていいらしいので https://paiza.jp/poh/enshura

手紙の暗号を解読してください。

1文字置きで

n=raw_input()
ans=''
for i in range(0,len(n),2):
    ans+=n[i]
print ans

forは2ずつでも、1ずつで%2しても良かったと思う。

月曜日から日曜日までの各曜日の合計を改行区切りで出力して下さい。

7つ区切りで足す。

n=int(raw_input())
l=[0]*7
for i in range(n):
    l[i%7]+=int(raw_input())
for i in l:
    print i

forで回して7つ区切りで足す。
そしてシナリオ分岐。

爆弾が爆発した後の盤面の状態を出力して下さい。

みなみルート
爆弾が爆発した後の最終形を出力。

n,k=map(int,raw_input().split())
l=[]
for i in range(k):
    l.append(map(int,raw_input().split()))

def kaz(l,i,k):
    cnt=0
    for j in range(k):
        if l[j][i]==1:
            cnt+=1
    return cnt

def sol(p,i,k,t):
    for r in range(-1,-k-1,-1):
        if t>0:
            l[r][i]=1
            t-=1
        else:
            l[r][i]=0
    return l

for i in range(n):
    t=kaz(l,i,k)
    l=sol(l,i,k,t)
for i in l:
    print ' '.join(map(str,i))

blog書き起こして気づいて再提出したけど初回の解法で2を0にしてたのは全く無駄で各列ごとに1が幾つあるか以外は全く重要ではなかった。

選択範囲に含まれるマスの全てを合計した数字を出力するプログラムを作成してください。

レナルート
範囲を全部足す。但し重複して指定された場所の加算は1度だけ。

x,y,n=map(int,raw_input().split())
l=[]
for i in range(y):
    l.append(map(int,raw_input().split()))
ans=0
for i in range(n):
    xs,ys,xg,yg=map(int,raw_input().split())
    for j in range(xs-1,xg,1):
        for k in range(ys-1,yg,1):
            ans+=l[k][j]
            l[k][j]=0
print ans

こちらも初回は一度は座標を全部setに入れて保存してたけど毎回加算と加算したらマスを0にしておけば受け取りながらで計算が終わるものだった。
多分、難易度は結構低く抑えられてて POH5+ 国際プログラミング選手権 のがアレでアレなイベントだと思う。