Time Limit: 3 sec / Memory Limit: 256 MB
配点 : 700 点
問題文
N 軒のホテルが一直線上に並んでいます。i \, (1 \leq i \leq N) 番目のホテルは、座標 x_i に位置しています。
旅行者である高橋君には、次の 2 つの信念があります。
- 高橋君の 1 日の移動距離は L を超えない。
- 高橋君は野宿をしない。すなわち、1 日の終わりには必ずいずれかのホテルにいなければならない。
Q 個のクエリが与えられます。j\,(1 \leq j \leq Q) 番目のクエリとして、異なる 2 つの整数 a_j,\,b_j が与えられます。 各クエリについて、前述の信念をともに守った上で、高橋君が a_j 番目のホテルから b_j 番目のホテルに移動するために必要な最小日数を求めてください。 なお、高橋君が a_j 番目のホテルから b_j 番目のホテルに移動できることは保証されます。
制約
- 2 \leq N \leq 10^5
- 1 \leq L \leq 10^9
- 1 \leq Q \leq 10^5
- 1 \leq x_i < x_2 < ... < x_N \leq 10^9
- x_{i+1} - x_i \leq L
- 1 \leq a_j,b_j \leq N
- a_j \neq b_j
- N,\,L,\,Q,\,x_i,\,a_j,\,b_j はいずれも整数である
部分点
- N \leq 10^3 および Q \leq 10^3 を満たすデータセットに正解した場合は、200 点が与えられる。
入力
入力は以下の形式で標準入力から与えられる。
N x_1 x_2 ... x_N L Q a_1 b_1 a_2 b_2 : a_Q b_Q
出力
出力は Q 行からなる。 j \, (1 \leq j \leq Q) 行目には、高橋君が a_j 番目のホテルから b_j 番目のホテルに移動するために必要な最小日数を表す整数を出力せよ。
入力例 1
9 1 3 6 13 15 18 19 29 31 10 4 1 8 7 3 6 7 8 5
出力例 1
4 2 1 2
1 つ目のクエリでは、次のように行動することで、1 番目のホテルから 8 番目のホテルへ 4 日間で移動することができます。
- 1 日目には、1 番目のホテルから 2 番目のホテルへ移動する。この日の移動距離は 2 である。
- 2 日目には、2 番目のホテルから 4 番目のホテルへ移動する。この日の移動距離は 10 である。
- 3 日目には、4 番目のホテルから 7 番目のホテルへ移動する。この日の移動距離は 6 である。
- 4 日目には、7 番目のホテルから 8 番目のホテルへ移動する。この日の移動距離は 10 である。
Score : 700 points
Problem Statement
N hotels are located on a straight line. The coordinate of the i-th hotel (1 \leq i \leq N) is x_i.
Tak the traveler has the following two personal principles:
- He never travels a distance of more than L in a single day.
- He never sleeps in the open. That is, he must stay at a hotel at the end of a day.
You are given Q queries. The j-th (1 \leq j \leq Q) query is described by two distinct integers a_j and b_j. For each query, find the minimum number of days that Tak needs to travel from the a_j-th hotel to the b_j-th hotel following his principles. It is guaranteed that he can always travel from the a_j-th hotel to the b_j-th hotel, in any given input.
Constraints
- 2 \leq N \leq 10^5
- 1 \leq L \leq 10^9
- 1 \leq Q \leq 10^5
- 1 \leq x_i < x_2 < ... < x_N \leq 10^9
- x_{i+1} - x_i \leq L
- 1 \leq a_j,b_j \leq N
- a_j \neq b_j
- N,\,L,\,Q,\,x_i,\,a_j,\,b_j are integers.
Partial Score
- 200 points will be awarded for passing the test set satisfying N \leq 10^3 and Q \leq 10^3.
Input
The input is given from Standard Input in the following format:
N x_1 x_2 ... x_N L Q a_1 b_1 a_2 b_2 : a_Q b_Q
Output
Print Q lines. The j-th line (1 \leq j \leq Q) should contain the minimum number of days that Tak needs to travel from the a_j-th hotel to the b_j-th hotel.
Sample Input 1
9 1 3 6 13 15 18 19 29 31 10 4 1 8 7 3 6 7 8 5
Sample Output 1
4 2 1 2
For the 1-st query, he can travel from the 1-st hotel to the 8-th hotel in 4 days, as follows:
- Day 1: Travel from the 1-st hotel to the 2-nd hotel. The distance traveled is 2.
- Day 2: Travel from the 2-nd hotel to the 4-th hotel. The distance traveled is 10.
- Day 3: Travel from the 4-th hotel to the 7-th hotel. The distance traveled is 6.
- Day 4: Travel from the 7-th hotel to the 8-th hotel. The distance traveled is 10.