给定一个由n个整数构成的数组{a1,a2,…,an},其中每个ai满足0≤ai≤2。定义一个数组的mex为未出现在该数组中的最小非负整数。例如
要求取出数组中的所有连续非空子数组,并求每个子数组的mex值之和。
连续非空子数组指从原数组中取出一段连续的元素(可以取全数组,也可以取部分),且该子数组至少包含一个元素。
整数数组的mex定义为没有出现在数组中的最小非负整数。例如mex(1,2,3)=0,mex(0,2,5)=1。 现在,对于给定的由n个整数组成的数组{a1,a2,...,an},取出全部连续非空子数组,并计算每个子数组的mex之和。
连续非空子数组为从原数组中,连续的选择一段元素(可以全选、可以不选)得到的新数组,且新数组中至少有一个元素。
第一行输入一个整数n(1<=n<=2×105)代表数组中的元素数量。
第二行输入n个整数a1,a2,...,an(0<=ai<=2)代表数组元素。
输出一个整数,代表所有子数组的mex之和。
输入
3
1 1 0
输出
3
在这个样例中,答案由以下三部分构成:
长度为1的连续子数组:(1)。(1)、(0),mex之和为0+0+1=1
长度为2的连续子数组:(1,1)、(1,0),mex之和为0+2=2
长度为的固挂子数据:(1,1,0),mex之和为2。
因此,答案为1+2+2=5。