E - 老朽化対策
Editorial
/
配点 : 800 点
Time Limit: 2 sec / Memory Limit: 1024 MB
問題文
パ研王国は無限に広がる二次元平面の形をしています。パ研王国には N 本の道路と M 軒の家があり、i\ (1\leq i\leq N) 本目の道路は y=a_ix+b_i の式で表される直線の形をしていて、また i\ (1\leq i\leq M) 軒目の家は座標 (x_i,\ y_i) に位置しています。
パ研王国では道路の老朽化が問題になっており、0 本以上の道路を選んで取り壊すことになりました。道路を 0 本以上選んで取り壊す方法は 2^N 通りありますが、それぞれについて 1 本以上の壊されていない道路の上にある家の軒数を数え、その総和を 10^9+7 で割った余りを求めてください。
制約
- 1\leq N,\ M\leq10^5
- -5×10^4\leq a_i\leq5×10^4
- 0\leq b_i\leq5×10^4
- 0\leq x_i,\ y_i\leq5×10^4
- 入力は全て整数
小課題
- (50 点) N=1
- (50 点) N\leq 10,\ M\leq2000
- (100 点) M\leq100
- (200 点) a_i≠a_j\ (i≠j)
- (400 点) 追加の制約はない.
入力
入力は以下の形式で標準入力から与えられます。
\(N\) \(M\) \(a_1\) \(b_1\) \(a_2\) \(b_2\) \(︙\) \(a_N\) \(b_N\) \(x_1\) \(y_1\) \(x_2\) \(y_2\) \(︙\) \(x_M\) \(y_M\)
出力
総和を 10^9+7 で割った余りを求めてください。出力の最後に改行を忘れないでください。
入力例1
2 2 1 2 2 1 1 3 2 5
出力例1
5
道路の壊され方には以下の 4 通りがあります。
- 1,\ 2 本目の道路を壊す。1 軒目の家も 2 軒目の家も道路上にない。
- 1 本目の道路を壊す。1 軒目の家も 2 軒目の家も 2 本目の道路上にある。
- 2 本目の道路を壊す。1 軒目の家は 1 本目の道路上にあるが、2 軒目の家は道路上にない。
- 1 本も道路を壊さない。1 軒目の家は 1,\ 2 本目の道路上にあり、2 軒目の家も 2 本目の道路上にある。
このサンプルは小課題 2,\ 3,\ 4,\ 5 の制約を満たします。
入力例2
2 5 1 3 1 3 2 5 2 5 2 5 2 5 2 5
出力例2
15
このサンプルは小課題 2,\ 3,\ 5 の制約を満たします。
入力例3
4 3 1 5 2 3 -1 11 3 2 1 5 3 8 2 7
出力例3
36
このサンプルは小課題 2,\ 3,\ 4,\ 5 の制約を満たします。
Writer : penguinman