AGC024に参加しました (445位)
AGC024に参加しました。A・B・Cを3完し、Dを途中まで解いて散りました。レートは1240→1334となりました。 順調に水色を進んでいます。早く暖色になるぞという強い意志を持ってやっていきたいと思います。
と書いておいてウケるんですが、先週末土曜日にあったGCJ Round2はぶっちしてしまいました。 飲み会に参加していて気づいたら0時だったのでもう無理でした。しまった。
前回のAtCoder
振り返り
A - Fairness
https://beta.atcoder.jp/contests/agc024/tasks/agc024_a
Cは両方に足され続けるので無視して問題ない。すなわち、操作を行うたびにAとBが入れ替わり続ける。 よって操作回数が偶数ならA-Bを、奇数ならB-Aを出力すればよい。
a, b, c, k = map(int, input().split()) if abs(a-b) > 1e18: print('Unfair') elif k%2==0: print(a-b) else: print(b-a)
B - Backfront
https://beta.atcoder.jp/contests/agc024/tasks/agc024_b
正しい順番に並んでいる部分列の最長を求めて、正しくない順番に並んでいる要素を正しい場所に移せばよい。
N = int(input()) cache = dict() for i in range(1, N+1): p = int(input()) cache[p] = cache.get(p-1, 0) + 1 print(max(cache.values()))
C - Sequence Growing Easy
https://beta.atcoder.jp/contests/agc024/tasks/agc024_c
def solve(): N = int(input()) ans = 0 prev = None for _ in range(N): a = int(input()) if prev is None and a!=0: return -1 if prev is not None: diff = a - prev if diff >= 2: return -1 elif diff <= 0: ans += prev prev = a ans += prev return ans if __name__=='__main__': print(solve())