AtCoder Regular Contest 082

F - Sandglass


Time limit時間制限 : 2sec / Memory limitメモリ制限 : 256MB

配点 : 700

問題文

パーツAとパーツBからなる砂時計があります。これらのパーツにはいくらかの砂が入っています。 砂時計を置くときはパーツAとパーツBのどちらかが上になり、そうでないほうが下になります。

1 秒間に 1 [g] の砂が上にあるパーツから下にあるパーツに落ちます。 ただし、上のパーツにもう砂が残っていない場合は砂は落ちません。

はじめ時刻 0 にパーツAが上にあり、a [g] の砂がパーツAに入っていて、X-a [g] の砂がパーツBに入っています(すなわち、合計 X [g] の砂が入っています)。

時刻 r_1,r_2, .., r_K に砂時計をひっくり返します。この操作は瞬間的に行われ、時間はかからないものとします。なお、時刻 t とは時刻 0t 秒後を指します。

クエリが Q 個与えられます。 各クエリは (t_i,a_i) の形をしています。 各クエリに対し、a=a_i だとして、時刻 t_i にパーツAに入っている砂の量が何gか答えてください。

制約

  • 1≤X≤10^9
  • 1≤K≤10^5
  • 1≤r_1<r_2< .. <r_K≤10^9
  • 1≤Q≤10^5
  • 0≤t_1<t_2< .. <t_Q≤10^9
  • 0≤a_i≤X (1≤i≤Q)
  • 入力値はすべて整数

入力

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

X
K
r_1 r_2 .. r_K
Q
t_1 a_1
t_2 a_2
:
t_Q a_Q

出力

各クエリの答えを 1 行ごとに出力せよ。


入力例 1

180
3
60 120 180
3
30 90
61 1
180 180

出力例 1

60
1
120

1 つめのクエリでは、はじめパーツAに 90 [g] 入っていた砂が 30 [g] 減り、60 [g] になります。 2 つめのクエリでは、はじめパーツAに入っていた 1 [g] の砂がパーツBに落ちた後、59 秒間変化は起こりません。ここで砂時計をひっくり返し、その 1 秒後にパーツAに入っている砂の量を聞かれているため、答えは 1 [g] になります。


入力例 2

100
1
100000
4
0 100
90 100
100 100
101 100

出力例 2

100
10
0
0

どのクエリでもはじめにパーツAに入っている砂は 100 [g] で、砂時計をひっくり返す前の時間での値を聞いています。


入力例 3

100
5
48 141 231 314 425
7
0 19
50 98
143 30
231 55
342 0
365 100
600 10

出力例 3

19
52
91
10
58
42
100

Score : 700 points

Problem Statement

We have a sandglass consisting of two bulbs, bulb A and bulb B. These bulbs contain some amount of sand. When we put the sandglass, either bulb A or B lies on top of the other and becomes the upper bulb. The other bulb becomes the lower bulb.

The sand drops from the upper bulb to the lower bulb at a rate of 1 gram per second. When the upper bulb no longer contains any sand, nothing happens.

Initially at time 0, bulb A is the upper bulb and contains a grams of sand; bulb B contains X-a grams of sand (for a total of X grams).

We will turn over the sandglass at time r_1,r_2,..,r_K. Assume that this is an instantaneous action and takes no time. Here, time t refer to the time t seconds after time 0.

You are given Q queries. Each query is in the form of (t_i,a_i). For each query, assume that a=a_i and find the amount of sand that would be contained in bulb A at time t_i.

Constraints

  • 1≤X≤10^9
  • 1≤K≤10^5
  • 1≤r_1<r_2< .. <r_K≤10^9
  • 1≤Q≤10^5
  • 0≤t_1<t_2< .. <t_Q≤10^9
  • 0≤a_i≤X (1≤i≤Q)
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

X
K
r_1 r_2 .. r_K
Q
t_1 a_1
t_2 a_2
:
t_Q a_Q

Output

For each query, print the answer in its own line.


Sample Input 1

180
3
60 120 180
3
30 90
61 1
180 180

Sample Output 1

60
1
120

In the first query, 30 out of the initial 90 grams of sand will drop from bulb A, resulting in 60 grams. In the second query, the initial 1 gram of sand will drop from bulb A, and nothing will happen for the next 59 seconds. Then, we will turn over the sandglass, and 1 second after this, bulb A contains 1 gram of sand at the time in question.


Sample Input 2

100
1
100000
4
0 100
90 100
100 100
101 100

Sample Output 2

100
10
0
0

In every query, the upper bulb initially contains 100 grams, and the question in time comes before we turn over the sandglass.


Sample Input 3

100
5
48 141 231 314 425
7
0 19
50 98
143 30
231 55
342 0
365 100
600 10

Sample Output 3

19
52
91
10
58
42
100

Submit提出する