题目描述
徐老师认为一个序列的极差能够代表这个序列数据的离散程度
极差是指这个序列中最大值减最小值的结果(如果序列只有一个元素,则极差为 0)
现在徐老师有一个包含 n 个数字的序列 a1∼an
他希望将这 n 个数字的序列切割成 x 段,每段至少包含 1 个数字,使得这 x 段序列的极差之和最小
但是这个问题过于简单了,所以徐老师决定强化一下问题,他结合了最近学习的 在线 概念,提出了动态询问
徐老师会在给定序列后,依次给出 m 次操作,操作格式如下:
0 x
表示将 ax(1<x<n) 修改为 ax−1+ax+1−ax,即进行 ax=ax−1+ax+1−ax 的赋值
1 x
表示提出一次询问,询问将当前这个序列切割成 x(1≤x≤n) 段(每段至少包含 1 个数字)后,这 x 段序列的极差之和最小是多少
现在徐老师想请你来挑战一下这道题目
输入格式
输入第一行包含两个整数 n,m,表示序列长度和操作次数。
输入第二行包含 n 个整数,表示序列 a1∼an。
接下来 m 行,每行包含两个整数表示一次操作,操作格式如题所述
输出格式
对于每次询问,输出一个整数表示答案
数据范围
对于 20% 的数据保证:1≤n,m≤100。
对于 40% 的数据保证:1≤n,m≤1000。
另有 10% 的数据保证:ai=1
对于 100% 的数据保证: 1≤n,m≤105,1≤ai≤109。
特别的,对于所有 i∈[1,n−1],有 ai+1≤ai
样例输入1
5 3
30 20 18 13 2
1 2
0 3
1 3
样例输出1
17
7
样例解释1
对于第一次询问,原序列为 30,20,18,13,2,切割成 [30,20,18,13] 和 [2] 可以得到最小的极差之和 (30−13)+(2−2)=17
对于第一次询问,原序列为 30,20,15,13,2,切割成 [30],[20,15,13] 和 [2] 可以得到最小的极差之和 (30−30)+(20−13)+(2−2)=7