すっかり存在を忘れていて残り時間30分からの挑戦。
Cの解法は解説読んでも釈然としません。
http://abc027.contest.atcoder.jp/
A: 長方形 - AtCoder Beginner Contest 027 | AtCoder
a,b,c = [int(x) for x in input().split()] if b==c: print(a) elif c==a: print(b) else: print(c)
B: 島と橋 - AtCoder Beginner Contest 027 | AtCoder
左の島から見ていって、橋でつないだ島人口の合計が目指すべき島人口×島数になるようにつなぐ。
N = int(input()) A = [int(x) for x in input().split()] sum_A = sum(A) if sum_A%N != 0: print(-1) else: target = sum_A // N cnt = 0 p = 0 n = 0 for i in range(N): p += A[i] n += 1 if p == n*target: cnt += n-1 p = 0 n = 0 print(cnt)
C: 倍々ゲーム - AtCoder Beginner Contest 027 | AtCoder
N = int(input()) depth = 0 n = N while n>0: depth += 1 n //= 2 depth %= 2 x = 1 turn = 0 player = ['Takahashi', 'Aoki'] while x<=N: if turn+depth == 1: x = x*2+1 else: x = x*2 turn = (turn+1)%2 print(player[turn])
D: ロボット - AtCoder Beginner Contest 027 | AtCoder
それぞれのMに対して右側にある'+'と'-'の個数の差を記録し、その差が少ない半分は'<'、多い半分は'>'とする。
S = input() A = [] m_cnt = 0 p_cnt = 0 for i in range(len(S)): s = S[len(S)-1-i] if s == 'M': A.append(p_cnt) m_cnt += 1 elif s == '+': p_cnt += 1 elif s == '-': p_cnt -= 1 A.sort() print(sum(A[m_cnt//2:]) - sum(A[:m_cnt//2]))