你得到一个数组,比如 A[],有 N 个元素,最初它们都等于负无穷大。
现在您被要求执行两种类型的查询(总共 M 个查询):
键入 1。给定两个整数 a 和 d,您需要将数组 A[] 从索引 l 更新为索引 r。您需要做的是 - 对于每个包含某些值的索引 l+i(其中 0<=i<=rl),例如“val”,您需要使用最大值 a+i*d 更新该索引的值,并且val,即 A[l+i] = max(A[l+i], a+i*d)。
类型 2。给定一个整数“i”,您需要报告 A[i] 的值。
示例:让 N = 5 和 M = 4
initially A[] = {-inf, -inf, -inf, -inf, -inf}
query 1: l = 2, r = 4, a = 2, d = 3
new A[] = {-inf, 2, 5, 8, -inf}
query 2: i = 3
output = 5
query 3: l = 3, r = 5, a = 10, d = -6
new A[] = {-inf, 2, 10, 8, -2}
query 4: i = 5
output = -2
注意:N 和 M 的值可以大到 100000,所以我正在寻找比 O(N*M) 更好的算法。
谢谢。