#T2137. 递增数组查询(Increasing Array Queries)

递增数组查询(Increasing Array Queries)

链接: https://cses.fi/problemset/task/2416

板块: Range Queries

时限: 1.00 s | 内存: 512 MB

题目描述

给你一个由 nn 个整数组成的数组。数组元素下标为 1,2,,n1,2,\dots,n

你可以使用如下操作来修改数组:选择一个数组元素,将其值加一。

你的任务是处理 qq 个如下形式的查询:当我们考虑从位置 aa 到位置 bb 的子数组时,最少需要多少次操作才能让该子数组变成递增的?

如果一个数组中每个元素都大于或等于其前一个元素,则称它是递增的。

输入

第一行输入包含两个整数 nnqq:分别表示数组大小和查询数量。

下一行包含 nn 个整数 x1,x2,,xnx_1,x_2,\dots,x_n:数组的内容。

最后有 qq 行描述查询。每行包含两个整数 aabb:一个子数组的起止位置。

输出

对每个查询,输出所需的最少操作次数。

数据范围

1n,q21051 \le n,q \le 2\cdot10^5 1xi1091 \le x_i \le 10^9 1abn1 \le a \le b \le n

样例输入

5 3
2 10 4 2 5
3 5
2 2
1 4

样例输出

2
0
14