在鸡年来临之际,为了彻底打击程序猿及猴族的残余势力,计算鸡村的大数据计算中心需要应对大量的区间求和问题以进行合理规划。
区间求和是这么一个问题:给你长度为
数据分块鸡不会前缀和,它只知道分块大法好。它会将该数组切成若干小块,假设分界点为
每次查询
- 存在
使得 ,那么数据分块鸡将直接使用该块内存储的元素总和,需要花费 的代价; - 如果不是,若存在
使得 ,那么数据分块鸡将会用该块内存储的元素总和减去不在询问区间内的元素总和以求得答案,需要花费 的代价; - 如果不是上面任何一种情况,那么询问区间一定会跨越多个块。对于每一块:
- 首先如果
,那么这一整块的元素总和将会被加进答案,需要花费 的代价。 - 除此之外,如果
与 有交,那么 肯定是覆盖了该块的一个前缀或一个后缀。此时数据分块鸡会在如下两种计算方法里进行抉择,选取代价最小的计算方法:- 要么直接求和计算,花费的代价为两个区间交集的元素个数;
- 要么拿块内元素总和减去不在询问区间内的元素总和,花费的代价为该块内包含的元素个数减去两个区间交集的元素个数。
- 首先如果
最后总代价为每步的代价之和。
现在,给你
输入格式
第一行两个正整数
接下来
输出格式
输出共一行,一个整数表示最小代价。
样例一
input
5 10 1 3 1 3 1 2 3 5 2 4 3 4 1 2 2 5 2 5 4 5
output
13
explanation
最优方案为选取集合
样例二
见样例数据下载。
限制与约定
子任务编号 | 分值 | ||
---|---|---|---|
1 | 20 | ||
2 | 20 | ||
3 | 20 | ||
4 | 40 |
对于所有数据,保证
时间限制:
空间限制: