NAPC 2025 OPEN 2026/03/27 09:00 ~ 2026/03/27 14:15 5:15:00.000

A I Hate Lazy Segment Tree

問題
制限時間: 6.5 sec メモリ制限: 2048 MB
problem

この問題はインタラクティブです。

ストーリー

harurun君は区間代入区間和取得問題が正解できないのでLazy Segment Treeが嫌いになってしまいました。

問題文

あなたはある部屋の管理人です。 部屋には、横一列に並んだ $N$ 個の宝箱、宝箱 $1$、宝箱 $2$、...、宝箱 $N$ があります。 最初、それぞれの宝箱には $0$ 枚以上のコインが入っていますが、あなたは中身の数を知りません。 宝箱の中のコインの枚数は、取引相手の商人の行動によって変化します。

最初に宝箱 $i$ に入っていたコインの枚数を $\Gamma_i$ とし、現在の宝箱 $i$ に入っているコインの枚数を $A_i$ とします。 最初、$A_i=\Gamma_i$ です。

あなたのタスクは、気まぐれな商人から出される $Q$ 個の要求に、魔法を使うことで、順番にすべて正しく答えることです。

<魔法>

  • 範囲 $[\alpha,\beta]$ を指定すると、宝箱 $\alpha$、宝箱 $\alpha+1$、...、宝箱 $\beta$ に最初に入っていたコインの枚数の総和 $\sum_{i=\alpha}^{\beta}\Gamma_i$ を知ることができる。
  • この魔法は、$1$ つのテストケースにつき合計で $3Q-1$ 回まで使うことができる。

<商人の要求>

  • 商人の要求は $5$ つの整数 $(L,R,X,V,W)$ で表され、以下の順に処理を行う。
    1. 商人が、宝箱 $L$、宝箱 $L+1$、...、宝箱 $R$ のすべての宝箱の中身を捨て、それぞれ $X$ 枚のコインを入れ直す。つまり、$i=L,L+1,\ldots,R$ について、$A_i\gets X$ と更新される。
    2. あなたが、宝箱 $V$、宝箱 $V+1$、...、宝箱 $W$ に現在入っているコインの枚数の総和 $\sum_{i=V}^{W}A_i$ を計算し、商人に答える。ただし、答えるために必要な場合、この手順2の直前にのみ、上記の魔法を (テストケースごとの合計制限回数が許す限り) 何度でも使用することができる。

$T$ 個のテストケースが与えられるので、それぞれについて解いてください。

入力の制約
  • 入力は全て整数
  • $1\leq T\leq 3\times 10^4$
  • $1\leq N\leq 10^6$
  • $1\leq Q\leq 3\times 10^4$
  • $1\leq L\leq R\leq N$
  • $0\leq X\leq 10^9$
  • $1\leq V\leq W\leq N$
  • ひとつの入力ファイルに含まれる $N$ の総和は $10^6$ を超えない
  • ひとつの入力ファイルに含まれる $Q$ の総和は $3\times 10^4$ を超えない
魔法の制約
  • $\alpha,\beta$ は整数
  • $1\leq \alpha\leq \beta\leq N$
宝箱の制約
  • $\Gamma_i$ は整数
  • $0\leq \Gamma_i\leq 10^9$
入出力

最初に、テストケース数を表す $T$ が与えられます。

$T$

テストケースの最初に、 $N$ と $Q$ が与えられます。

$N$ $Q$

各商人の要求では最初に、 $L, R, X, V, W$ が与えられます。

$L$ $R$ $X$ $V$ $W$

あなたは入力を受け取ったあとに、魔法の使用または商人への解答をすることができます。 出力をした後は必ず flush をしてください。

魔法を使用する場合は、魔法の制約を満たす整数 $\alpha, \beta$ を以下のように出力してください。

? $\alpha$ $\beta$

これに対して、 $U=\sum_{i=\alpha}^{\beta}\Gamma_i$ としてジャッジから以下のように与えられます。

$U$

この後、もう一度魔法の使用または商人への解答をすることができます。 テストケースごとの合計制限回数を越さなければ、各要求で好きな回数魔法を使用することができます。

解答をする場合は、 $ans=\sum_{i=V}^{W}A_{i}$ として以下のように出力してください、

! $ans$

これに対してジャッジからの返答はありません。 次の要求がある場合はその要求を処理してください。 すべての要求が終了した場合は次のテストケースに移ってください。 すべてのテストケースが終了した場合は、ただちにプログラムを終了してください。

注意点
  • 各テストケースについて、使用した魔法の回数が $3Q-1$ を超えた場合は不正解となります。超えた場合はただちにプログラムを終了させてください。終了させない場合のジャッジの挙動は不定です (AC以外のいずれかになります)。
  • 不正な出力をした場合、ジャッジの挙動は不定です。
  • 出力の最後に必ず flush をしてください。しなかった場合は TLE となる可能性があります。
  • 出力が非常に多いので TLE には十分注意してください。
入出力例

以下は $T=1, N=10, Q=3$ の場合の入力例です。 ジャッジは $\Gamma=(1,2,2,3,0,3,16,16,1,1)$ を想定しています。

入力出力説明
1
最初に、テストケース数 $T$ が与えられます。
10 3
テストケースの初めに、整数 $N$ と $Q$ が与えられます。
1 2 1 1 2
次に、最初の要求が与えられます。 $A_1,A_2$ がそれぞれ $1$ で更新されます。
! 2
あなたは $\sum_{i=1}^{2}A_i=2$ であることを知っているので、 $2$ を答えます。
5 6 10 2 5
次の要求が与えられます。 $A_5,A_6$ がそれぞれ $10$ で更新されます。
? 3 4
$\Gamma_3,\Gamma_4$ を知らないので、 $\sum_{i=3}^4\Gamma_i$ を魔法で確認します。
5
$\sum_{i=3}^{4}\Gamma_i$ が与えられます。
! 16
$\sum_{i=2}^{5}A_i=16$ なので、 $16$ と答えます。
1 3 0 6 10
次の要求が与えられます。 $A_1,A_2,A_3$ がそれぞれ $0$ で更新されます。
? 6 6
$\Gamma_6$ を忘れたので、 $\Gamma_6$ を魔法で確認します。
3
$\sum_{i=6}^{6}\Gamma_i$ が与えられます。
? 7 8
$\sum_{i=7}^{8}\Gamma_i$ を魔法で確認します。
32
$\sum_{i=7}^{8}\Gamma_i$ が与えられます。
? 7 10
$\sum_{i=7}^{10}\Gamma_i$ を魔法で確認します。
34
$\sum_{i=7}^{10}\Gamma_i$ が与えられます。
! 44
$\sum_{i=6}^{10}A_i$ を答えます。

魔法の使用回数は $4$ であり、 $3Q-1=8$ 以下なので条件を満たします。

各出力の最後に flush をすることを忘れないでください。