rt,样例过了,但是0分
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int n, m, k, jmp[N], stp[N], a[N], lb[N], rb[N];
void modify(int l, int r)
{
//cout << l << " " << r << endl;
for (int i = r ; i >= l ; i --)
if (a[i] + i > rb[i])
jmp[i] = a[i] + i, stp[i] = 1;
else
jmp[i] = jmp[a[i] + i], stp[i] = stp[a[i] + i] + 1;
}
int query(int x)
{
int ans = 0;
while (x < n)
ans += stp[x], x = jmp[x];
return ans;
}
int main()
{
cin >> n;
k = sqrt(n);
for (int i = 0 ; i < n ; i ++)
cin >> a[i];
for (int i = 0 ; i <= n / k ; i ++)
lb[i] = i * k, rb[i] = min((i + 1) * k - 1, n - 1);
modify(0, n - 1);
cin >> m;
while (m --)
{
int i, j, p;
cin >> i >> j;
if (i == 1)
cout << query(j) << endl;
else
{
cin >> p;
a[j] = p;
modify(lb[j / k], rb[j / k]);
//for (int i = 0 ; i < n ; i ++) cout << jmp[i] << " " << stp[i] << endl;
}
}
return 0;
}