U34379.树状数组二分
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
已知一个数列 a,你需要进行下面两种操作:
- 将某一个数修改成 d。
- 查询最大的 P(0≤P≤n) 满足 ∑i=1P ai≤s
输入格式
第一行包含两个整数 n,m,分别表示该数列数字的个数和操作的总个数。
第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。
接下来 m 行每行包含 2 或 3 个整数,表示一个操作,具体如下:
1 x d
:将第 x 个数改成 d。2 s
:查询最大的 P(0≤P≤n) 满足 ∑i=1P ai≤s
输出格式
对于每一个查询,输出一行,表示答案。
输入输出样例
输入#1
5 5 1 2 3 4 5 2 6 2 11 2 15 1 2 11 2 15
输出#1
3 4 5 3
说明/提示
对于 50% 的数据:n≤1000,m≤1000。
对于 80% 的数据: 1≤n,m≤2∗105。
对于 100% 的数据: 1≤n,m≤2∗106。
- 1≤ai≤109
- 1≤d≤109
- 1≤s≤1015
保证任意时刻数列中所有元素的绝对值之和 ≤1018。
此题输入较多需要关闭流加速
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);