genzai0の日記

にっき

abc127cのノート

漫画

昨日読んだhush hushという漫画が良かった。

リスとコヨーテのほのぼの漫画だった。

別にhashとは何の関係もない。

abc127c

atcoder.jp

結構簡単に感じた。

多分l,r別にforを回しても間に合うと思う。

l,rの入力が

1,3

2,4

だと、一つ目で1~3なので

| 1 2 3 | 4 => 3枚のIDカード[1,2,3]

二つ目で2~4なので

1 | 2 3 4 | => 3枚のIDカード[2,3,4]

が通ることが可能。したがって両方に含まれる2,3のIDカードの二枚が答えとなる。

また、{L_i, L_i+1,...,R_i}と連続しているので穴抜けはない。

書いたコード

n,m = map(int,input().split())
src = [tuple(map(int,input().split())) for i in range(m)]

l_max,r_min = 0,10**5
for l,r in src:
    l_max = max(l_max,l)
    r_min = min(r_min,r)
else:
    if r_min-l_max < 0:
        print(0)
    else:
        print(r_min-l_max+1)

入力の際にl,rを分けておけばmin関数,max関数にそれぞれリストを入れるだけなのでそっちの方が書き方的には早かったと思う。

また、今回だったらこれで作っても

def ret(list_object, index):
   return [i[index] for i in list_object]

すぐに返ってくるのでいいかもしれない。

最良なのは入力を変えることだとは思うけれど。

反省

簡単だったけど、ans<0の時を書き忘れでWAしてしまった。

ちゃんと考えないとね。