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)