🎩

# ABC190 B - Magic 3

2021/01/31に公開

ABC190 B - Magic 3

問題へのリンク

https://atcoder.jp/contests/abc190/tasks/abc190_b

問題概要

魔法使いの高橋くんは魔物と戦っており、 N 種類の呪文が使うことができる。 i 番目の呪文は詠唱に X_i 秒かかり、威力は Y_i である。魔物は強いので、詠唱に S 秒以上かかったり、威力が D 以下の呪文ではダメージが与えられない。ダメージを与えられる呪文はあるだろうか?

制約

1 \leq N \leq 100
1 \leq X_i \leq 10^9
1 \leq Y_i \leq 10^9
1 \leq S \leq 10^9
1 \leq D \leq 10^9

ABC中の解答

すべての呪文の中に1つでも X_i < S かつ Y_i > D を満たすものがあるかfor文で探した。以上と以下が紛らわしかったがテストケースの中に S, D の値とちょうど同じ呪文が存在したのでACになることが確信できた。テストケースが優しくて嬉しい。

N, S, D = map(int, input().split())
for _ in range(N):
    x, y = map(int, input().split())
    if x < S and y > D:
        print('Yes')
        exit()
print('No')

https://atcoder.jp/contests/abc190/submissions/19779049

他の解法1

evimaさんの解法が すべての呪文の中に1つでもあるか の判定に論理和を用いてた。これならif文を書く必要がなく上手だなと思ったので覚えるために同じく実装してみた。

N, S, D = map(int, input().split())
v = False
for _ in range(N):
    x, y = map(int, input().split())
    v |= x < S and y > D
ans = 'Yes' if v else 'No'
print(ans)

https://atcoder.jp/contests/abc190/submissions/19843532

cf. evimaさんの動画

https://www.youtube.com/watch?v=3MUEmcbHA8c&feature=youtu.be

Discussion