初心者のプログラミング日記

プログラミング初心者の日記

プログラミングに関することを書いていきます。

ABC135(A~C)

A - Harmony

https://atcoder.jp/contests/abc135/tasks/abc135_a
かかった時間 12分
実行時間 24ms

A,B=map(int,input().split())

if (A+B)%2==0:
    print(int((A+B)/2))
else:
    print("IMPOSSIBLE")

入力例を見た感じAとBを足して2で割ったら答えになり、それが奇数だったらIMPOSSIBLEになりそうだったのでそうした。

B - 0 or 1 Swap

https://atcoder.jp/contests/abc135/tasks/abc135_b
かかった時間 13分
実行時間 23ms

N=int(input())
P=list(map(int,input().split()))
M=[i for i in range(1,N+1)]
ans=0

for i,j in zip(P,M):
    if i!=j:
        ans+=1

if ans==2 or ans==0:
    print("YES")
else:
    print("NO")

連番の配列とPを比べて要素が違う箇所の個数を数える。それが2個または0個だった場合にPは連番の配列に並び替えることができる。

C - City Savers

https://atcoder.jp/contests/abc135/tasks/abc135_c
かかった時間 10分
実行時間 134ms

N=int(input())
A=list(map(int,input().split()))
B=list(map(int,input().split()))
ans=0

for i in range(N):
    #i番目の街のモンスターを倒しきれる場合
    if A[i]>=B[i]:
        ans+=B[i]
    else:
        ans+=A[i]
        B[i]-=A[i]
        #i+1番目のモンスターを倒しきれる場合
        if B[i]>=A[i+1]:
            ans+=A[i+1]
            A[i+1]=0
        else:
            ans+=B[i]
            A[i+1]-=B[i]
        
print(ans)