N 個の数字 (すべて正で、4 桁以下) を持つ配列Aが与えられた場合、 2種類のクエリがサポートされます。合計 M 個のクエリがあります。
- インデックスL,R (両方を含む) で指定された範囲をKで更新します。
- L,R (両方を含む)で指定された範囲内の最大の要素を返します。
数値をK回更新するということは、数値をK回回転させることを意味します。
たとえば、1234 は 2341 に回転します。
905 は 059 に回転し、059 は 590 に回転します。
注:059と59は別の番号です。59 は 95 に回転します。
指定された配列要素に先行ゼロがありません。
制約:
0 <= AI < 10000
1 <= N <= 800000
1 <= M <= 200000
0 <= K <= 60
ツリーノードが含まれる範囲の回転数を格納するセグメントツリーを考えました。これを遅延伝播で実装しましたが、遅延伝播でもクエリの実装に最悪の場合 O(N) 時間がかかり、TIME LIMIT EXCEEDED につながります。
誰でもより速いアプローチを提案できますか?
配列または構造体の一部のプロパティが不足していますか?