[R2F]带修求和 - 代码源竞赛平台

时空限制

2S/512M

题目描述

给定一个长度为 nn 的正整数数组 AA 以及 qq 个操作,操作分为以下三种:

1 x y1\ x\ y:表示将序列第 xx 项 AxA_x 的值改为 yy。

2 v2\ v:表示询问最少几项 AiA_i 相加,使得和大于等于 vv。

3 v3\ v:表示询问最多几项 AiA_i 相加,使得和小于等于 vv。

格式

输入格式

第一行包含一个整数 nn,表示数组的长度。

第二行包含 nn 个正整数,表示数组 AA 的初始值。

第三行包含一个整数 qq,表示操作的数量。

接下来 qq 行每行一个操作,格式见题目描述。

输出格式

对于每个 22 或 33 类的询问,在单独的一行中输出一个整数表示答案。无解输出 -1\text{-1}。

样例

样例输入 #1

5
1 2 3 4 5
9
2 6
1 5 2
2 6
1 4 2
2 6
1 1 4
3 1
2 14
2 0

样例输出 #1

2
2
3
0
-1
0

数据规模

对于 100%100\% 的数据, 1≤n,q≤5×1051\leq n,q\leq 5\times 10^5, 1≤x≤n1\leq x\leq n, 1≤Ai,y≤5×1061\leq A_i,y\leq 5\times 10^6, 0≤v≤10180\leq v\leq 10^{18}。

测试点编号 n,qn,q Ai,yA_i,y 特殊性质
1 ≤500\leq 500 ≤105\leq 10^5 无\text{无}
2 ≤105\leq 10^5 ≤50\leq 50
3~4 ≤105\leq 10^5 没有类型 1 的操作\text{没有类型 1 的操作}
5~8 无\text{无}
9~10 ≤5×105\leq 5\times 10^5 ≤5×106\leq 5\times 10^6