atcoder#ARC082D. [ARC082F] Sandglass

[ARC082F] Sandglass

题目描述

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

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

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

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

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

输入格式

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

X X K K r1 r_1 r2 r_2 .. rK r_K Q Q t1 t_1 a1 a_1 t2 t_2 a2 a_2 : : tQ t_Q aQ a_Q

输出格式

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

题目大意

有一个沙漏,一部分称为A,另一部分称为B。每个部分都能装无限的沙子。

每秒会有1[g]沙子从上部分落入下部分,当然上部分已经没有沙子时不会有变化。

开始时A在上,装有a[g]沙子,B部分装有(X-a)[g]沙子,总计X[g]沙子。

在时间为r1,r2,..,rK时会反转沙漏,这个操作瞬间完成不花费时间。这里说明,时间t指的是时间为0后过了t秒。

给出Q个询问。每个询问的形式为(ti,ai)。对每个询问,回答当初始的a[g]沙子的a为ai时,时间为ti时A部分有几g沙子。

180
3
60 120 180
3
30 90
61 1
180 180
60
1
120
100
1
100000
4
0 100
90 100
100 100
101 100
100
10
0
0
100
5
48 141 231 314 425
7
0 19
50 98
143 30
231 55
342 0
365 100
600 10
19
52
91
10
58
42
100

提示

制約

  • 1 < =X < =109 1\ <\ =X\ <\ =10^9
  • 1 < =K < =105 1\ <\ =K\ <\ =10^5
  • 1 < =r1 < r2 < .. < rK < =109 1\ <\ =r_1\ <\ r_2\ <\ ..\ <\ r_K\ <\ =10^9
  • 1 < =Q < =105 1\ <\ =Q\ <\ =10^5
  • 0 < =t1 < t2 < .. < tQ < =109 0\ <\ =t_1\ <\ t_2\ <\ ..\ <\ t_Q\ <\ =10^9
  • 0 < =ai < =X (1 < =i < =Q) 0\ <\ =a_i\ <\ =X\ (1\ <\ =i\ <\ =Q)
  • 入力値はすべて整数

Sample Explanation 1

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

Sample Explanation 2

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