#1449. 筹备计划

筹备计划

筹备计划

题目描述

同学们现在分散在数轴上11~nn的整点上,设整点ii上的同学数量为aia_{i}

还有一个集合位置的候选集合SS,初始为{1,2,,n}\{1,2,\ldots,n\}

你还要处理qq次操作,每次操作,可能发生以下事件:

  • 在某个位置的同学增加xx个或减少xx个。
  • 令某个区间[l,r][l,r]内的整点成为可以选择的整点(将[l,r][l,r]中不在SS内的点加入SS)。
  • 令某个区间[l,r][l,r]内的整点成为不能选择的整点(将SS中在[l,r][l,r]内的点删去)。

对于区间限制的操作,不保证操作前该区间的整点是否能选择。操作的影响都是会保留下来的。

每次操作过后,你都需要找到SS中的一个整点kk作为集合位置,最小化所有同学走到该点的距离总和。形式化地,你需要:

$$\min_{k \in S} \left\{ \sum_{i=1}^{n} a_{i} \times |i-k| \right\} $$

如果有多个满足条件的kk,选择kk最小的那个。

输入格式

第一行包含两个整数nnqq,表示整点的范围和操作次数。

第二行包含nn个整数,第ii个整数aia_{i}表示在初始时刻每个位置上的学生数量。

接下来qq行,每行包含三个整数typetypexxyy

  • type=1type=1,表示在xx位置增加yy名学生(保证1xn1 \leq x \leq n1y2×1051 \leq y \leq 2 \times 10^{5});
  • type=2type=2,表示在xx位置减少yy名学生(保证1xn1 \leq x \leq n1y2×1051 \leq y \leq 2 \times 10^{5}xx位置一定存在至少yy名学生);
  • type=3type=3,表示在[x,y][x,y]内的整点成为可以选择的整点(保证1xyn1 \leq x \leq y \leq n);
  • type=4type=4,表示在[x,y][x,y]内的整点成为不能选择的整点(保证1xyn1 \leq x \leq y \leq n)。

输出格式

输出总共qq行,第ii行的数为第ii个操作发生后,对应集合位置kk

无解输出1-1

数据范围与提示

  • 对于20%20\%的数据,nnq200q \leq 200
  • 对于50%50\%的数据,nnq2000q \leq 2000
  • 对于另外30%30\%的数据,不存在type=3type=3type=4type=4的操作;
  • 对于100%100\%的数据,1n2×1051 \leq n \leq 2 \times 10^{5}1q2×1051 \leq q \leq 2 \times 10^{5}0ai2×1050 \leq a_{i} \leq 2 \times 10^{5}

样例

5 4
1 0 1 0 0
1 4 1
2 3 1
4 1 3
3 2 3
3
1
4
2
见position2.in
见position2.ans