#ABC411C. 黑色区间
黑色区间
问题描述
有N个格子按从左到右的顺序排成一行。最初,所有格子都被涂成白色。
需要依次处理Q个查询。第i个查询会给出一个1到N之间的整数Aᵢ,并执行以下操作:
将从左数第Aᵢ个格子的颜色翻转。具体来说,如果从左数第Aᵢ个格子是白色,就将其涂成黑色;如果是黑色,就将其涂成白色。
然后,求出连续黑色格子区间的数量。
这里,连续黑色格子区间指的是满足以下所有条件的整数对(l, r)(1≤l≤r≤N):
- 从左数第l、l+1、…、r个格子全部被涂成黑色。
- 要么l=1,要么从左数第(l-1)个格子是白色。
- 要么r=N,要么从左数第(r+1)个格子是白色。
约束条件
- 1≤N, Q≤5×10⁵
- 1≤Aᵢ≤N
- 输入均为整数
输入格式
输入通过标准输入按以下格式给出:
N Q
A₁ A₂ … A_Q
输出格式
输出Q行。第i行(1≤i≤Q)输出第i个查询的答案。
输入示例1
5 7
2 3 3 5 1 5 2
输出示例1
1
1
1
2
2
1
1
输入示例1解释
以下将从左数第i个格子称为格子i。
每个查询后的状态如下:
- 第1个查询后,只有格子2是黑色。连续黑色格子区间有1个:(l, r)=(2, 2)。
- 第2个查询后,格子2、3是黑色。连续黑色格子区间有1个:(l, r)=(2, 3)。
- 第3个查询后,只有格子2是黑色。连续黑色格子区间有1个:(l, r)=(2, 2)。
- 第4个查询后,格子2、5是黑色。连续黑色格子区间有2个:(l, r)=(2, 2)、(5, 5)。
- 第5个查询后,格子1、2、5是黑色。连续黑色格子区间有2个:(l, r)=(1, 2)、(5, 5)。
- 第6个查询后,只有格子1、2是黑色。连续黑色格子区间有1个:(l, r)=(1, 2)。
- 第7个查询后,只有格子1是黑色。连续黑色格子区间有1个:(l, r)=(1, 1)。
因此,按顺序输出1、1、1、2、2、1、1。
输入示例2
1 2
1 1
输出示例2
1
0
输入示例2解释
- 第1个查询后,格子1是黑色。连续黑色格子区间有1个:(l, r)=(1, 1)。
- 第2个查询后,所有格子都是白色。因此,第2行输出0。
输入示例3
3 3
1 3 2
输出示例3
1
2
1