EAFP

~ Easier to Ask for Forgiveness than Permission ~

Atcoder-ABC203をpythonで問題を解いてみた

目的

  • Atcoderで上を目指すべく頑張っている中でABC203を解いたので、解説してみる
    • pypy7.3を使って解いている

A問題

atcoder.jp

考察

  • 問題通りに実装する

実装

a, b, c = map(int, input().split())

if a == b:
    print(c)
elif b == c:
    print(a)
elif a == c:
    print(b)
else:
    print(0)

結果

B問題

atcoder.jp

考察

  • N, K <= 9 のため全探索すれば良い

実装

N, K = map(int, input().split())

ans = 0

for i in range(1, N+1):
    for j in range(1, K+1):
        r = int('{}0{}'.format(i, j))
        ans += r

print(ans)

結果

C問題

atcoder.jp

考察

  • max(N) = 2*105 のため、O(N2) では間に合わない
    • for loop 一回程度の繰り返しで探索する
  • Aくんに出会うまでにKが0になるか、そうでないかで判定する
    • Aは順番が小さい順に並んでるわけではないので、sortし、Aを小さい順に並べる

実装

N, K = map(int, input().split())

pos = 0
ans = 0
AB = []
for _ in range(N):
    A, B = map(int, input().split())
    AB.append((A, B))

AB = sorted(AB, key=lambda x: x[0])


for A, B in AB:
    if A - pos > K:
        ans = K + pos
        K = 0
        break
    else:
        K = K + B - (A-pos)
        pos = A

if K > 0:
    ans = K + pos

print(ans)

結果

まとめ

  • D問題は難し過ぎて手が出なかった
  • 13回目にして茶色コーダになれた
    • C問題までの早解の精度を上げていきたい

f:id:kazu_0716:20210531234335p:plain
Atcoder rate