衝突 (Collision)
시간 제한9초메모리 제한2048 MB
길이 L인 원형 트랙에서 시간 T 동안 주자들 사이에 일어나는 충돌 횟수를 세고, 주자를 추가하거나 삭제할 때마다 답을 갱신한다.
문제
ビ太郎は,大きな円形の湖の周りに住んでいる.湖の周りの長さは L であり,湖の周りのある地点にはビ太郎の家がある.ビ太郎の家から湖の周りを時計回りに x (0 ≦ x < L) 移動した地点を地点 x と呼ぶ.現在,湖の周りで行われるマラソン大会が企画されている.
ビ太郎はマラソン大会は以下のように行われる予定であることを聞いた.
0からL - 1までの番号が付けられたゼッケンが1枚ずつ用意されている.マラソン大会の参加者はいずれかのゼッケンを着用する.ゼッケンl(0 ≦ l ≦ L - 1) を着用する参加者のスタート地点は地点lとなる.- マラソン大会がスタートした後,
Tビョウにわたり,参加者はそれぞれの速度で湖の周りを時計回りに移動する.マラソン大会がスタートしてから,tビョウ (0 ≦ t ≦ T) 経った時点を時刻tと呼ぶ.
ビ太郎はマラソン大会の参加者名簿を持っている.現在は N 人の参加者が参加者名簿に記載されていて,i 番目の参加者 (1 ≦ i ≦ N) はゼッケン Ai を着用し,1 ビョウあたり Si の速度で湖の周りを時計回りに移動する予定である.
参加者名簿を元に,ビ太郎はマラソン大会中に起こる衝突の回数を求めた.ここで,衝突とは異なる参加者 2 人が同じ地点にいることを指すものとする.厳密には,0 ≦ p < q ≦ L - 1 を満たす整数 p, q と 0 ≦ t ≦ T を満たす実数 t からなる組 (p, q, t) で,以下の条件を満たすものの個数を求めた.
- ゼッケン
pを着用した参加者がいる. - ゼッケン
qを着用した参加者がいる. - ゼッケン
pを着用した参加者とゼッケンqを着用した参加者が,時刻tに同じ地点にいる.
しかし,その後参加者名簿に Q 回の変更が行われた.j 番目 (1 ≦ j ≦ Q) の変更は 2 つの整数 Xj, Yj で表され,以下のようなものである.
- 現在,ゼッケン
Xjを着用し,1ビョウあたりYjの速度で湖の周りを時計回りに移動する人が参加者名簿に記載されている場合,その人を参加者名簿から削除する.そうでない場合,ゼッケンXjを着用し,1ビョウあたりYjの速度で湖の周りを時計回りに移動する人を新たに参加者名簿に追加する.
ただし,いずれの変更が終了した時点でも,参加者名簿に記載されている参加者は 2 人以上おり,かつ参加者の着用するゼッケンは相異なることが保証される.
ビ太郎はそれぞれの変更が終了した時点での参加者における,マラソン大会中に起こる衝突の回数を知りたい.問題文の制約より,マラソン大会中に起こる衝突の回数は有限であることが証明できる.
マラソン大会と参加者名簿への変更の情報が与えられたとき,それぞれの変更が終了した時点での参加者における,マラソン大会中に起こる衝突の回数を 1 000 000 007 で割ったあまりを求めるプログラムを作成せよ.
입력
入力は以下の形式で与えられる.
N L T
A1 A2 … AN
S1 S2 … SN
Q
X1 Y1
X2 Y2
:
XQ YQ
출력
Q 行に出力せよ.j 行目 (1 ≦ j ≦ Q) には j 番目の変更が終了した時点での参加者における,マラソン大会中に起こる衝突の回数を 1 000 000 007 で割ったあまりを出力せよ.
제한
2 ≦ N.N ≦ L ≦ 109.1 ≦ T ≦ 109.0 ≦ Ai ≦ L - 1(1 ≦ i ≦ N).Ai ≠ Aj(1 ≦ i < j ≦ N).1 ≦ Si ≦ 109(1 ≦ i ≦ N).1 ≦ Q.N + Q ≦ 100 000.0 ≦ Xj ≦ L - 1(1 ≦ j ≦ Q).1 ≦ Yj ≦ 109(1 ≦ j ≦ Q).- いずれの変更が終了した時点でも,参加者は
2人以上いる. - いずれの変更が終了した時点でも,参加者のスタート地点は相異なる.
- 入力される値はすべて整数である.