実行時間制限: 2 sec / メモリ制限: 256 MB
配点 : 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 とは時刻 0 の t 秒後を指します。
クエリが 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