1788:零数组

文件提交:无需freopen 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判 命题人:
提交:4 解决:2

题目描述

定义一个整型数组 a,其中包含 n 个非负整数(存储索引为0...n-1)。

定义减值操作:任意选择一个正整数 x,并让数组 a 中所有非零元素减去 x,需要保证减值操作后,数组中所有的元素均大于等于 0。例如 n=5 的数组 a 中有 2,0,2,3,7,现在可以选择 x=1 进行减值操作,操作后的元素分别为: 1,0,1,2,6。

初始时,给定正整数 n 和 n 个非负整数组成的数组 a。现在依次进行 q 次操作,操作类型包含:

  1. 输入整数 k(0<=k<n) 和 x,并修改数组 a, 令 a[k] = x;
  2. 查询利用减值操作将数组 a 中前 n 个元素全部变为 0 的最少操作步数;
注意:只有操作 1 会对数组 a 进行修改;操作 2 需要回答具体的答案。

输入

第一行输入一个正整数 n, 表示数组 a 中元素的个数。

第二行以空格隔开输入 n 个非负整数 ai, 第 i (0<=i<n)个整数表示数组 a 中索引为 i 的值。

第二行输入一个正整数 q,表示操作次数。

接下来 q 行,每行先输入一个正整数 op,表示操作类型:


  • 如果 op==1,表示当前为操作 1,需要以空格隔开再输入两个非负整数 k,x。
  • 如果 op==2,表示当前为操作 2。
对于100%的数据,1<=n,q<=105, 0<=k<n, 0<=ai,x<=109


输出

输出若干行,依次为每个操作 2 的答案。

样例输入-1 复制

5
2 0 2 3 7
3
2
1 3 2
2

样例输出-1 复制

3
2

提示

样例解释:

第一次操作:

  1. 选择 x=2,数组 a 变为: 0,0,0,1,5;
  2. 选择 x=1,数组 a 变为: 0,0,0,0,4;
  3. 选择 x=4,  数组 a 变为: 0,0,0,0,0;
所以第一次操作需要 3 次减值操作。

第二次操作,将 a[3] = 2,数组 a 变为:2,0,2,2,7;

第三次操作:

  1. 选择 x = 2, 数组 a 变为: 0,0,0,0,5;
  2. 选择 x = 5,   数组 a 变为: 0,0,0,0,0;
所以第三次操作需要 2 次减值操作。