筑波大学プログラミングコンテスト2023
コンテスト日時
2023/09/03 (Su) 14:00 - 17:00

B - Dangerous Drive

Milk
2
s
1024
MB
200

問題文

筑波大学を通って東西に無限に続く道路があり、道路の各点は $x$ 座標で表されます。$x=a$ の点は筑波大学から $a$ $\text{km}$ 東に進んだ点($a<0$ の場合は $|a|$ $\text{km}$ 西に進んだ点)であることを意味します。また、この道路の制限速度は $X\ \text{km/h}$ です。

この道路上に $N$ 台の車が走っており、いま $i$ 台目の車は $x=A_i$ の地点を $S_i$ $\text{km/h}$ で東向きに走っています。
これらの車が速度を変えずに走り続けたとき、$10^{10^{100}}$ 時間後までに衝突している車が存在するか判定し、存在する場合は Dangerous と出力してください。
そうでないとき、制限速度を超えている車がある場合は Over と出力してください。
衝突せず、制限速度を超えている車も存在しない場合は Safe と出力してください。

制約

すべてのテストケースについて、以下の制約を満たす。

  • $1 \leq N \leq 2 \times 10^5$
  • $|A_i| \leq 10^9$ $(1 \leq i \leq N)$
  • $1 \leq S_i \leq 10^9$ $(1 \leq i \leq N)$
  • $A_i \neq A_j$ $(i \neq j)$
  • $1 \leq X \leq 10^9$
  • 入力はすべて整数

部分点

この問題には、部分点が設定されている。以下の条件を満たすテストケースにすべて正解したとき、記載された点数が与えられる。

  1. ($5$ 点) $A_1 < A_2 < \cdots < A_N,\quad S_1 < S_2 < \cdots < S_N$
  2. ($10$ 点) $1 \leq N \leq 2000,\quad 0 \leq A_1 < A_2 < \cdots < A_N$
  3. ($20$ 点) $1 \leq N \leq 2000$
  4. ($40$ 点) $A_1 < A_2 < \cdots < A_N$
  5. ($125$ 点) 追加の制約はない。

入力

入力は以下の形式で標準入力から与えられる。

$N$ $X$
$A_1$ $S_1$
$A_2$ $S_2$
$\vdots$
$A_N$ $S_N$

出力

Dangerous, Over, Safe のうち答えとなる文字列を 1 行に出力せよ。

入力例 1
5 5 0 3 5 3 10 3 11 5 12 5
出力例 1
Safe

車が衝突することはありません。また、どの車も制限速度以下で走行しています。したがって、 Safe を出力します。
このテストケースは、部分点 2, 3, 4, 5 の条件を満たします。

入力例 2
5 5 0 1 5 3 10 3 11 2 12 5
出力例 2
Dangerous

西から数えて3台めの車が4台めの車に衝突します。したがって、 Dangerous を出力します。
このテストケースは、部分点 2, 3, 4, 5 の条件を満たします。

入力例 3
5 5 0 1 5 2 10 3 11 4 12 6
出力例 3
Over

車は衝突しません。最も東の車が制限速度を超えているため、 Over を出力します。
このテストケースは、部分点 1, 2, 3, 4, 5 の条件を満たします。

提出
C++23 (g++ 12.2.0)