可能是在k=0,进行修改操作时,只进行了内层值域线段树的频次修改,而忘记了修改后,将原数组更改为新的值。
for (int i = 1; i <= q; i++) {
int k = query[i][0], a = query[i][1], b = query[i][2];
if (k == 0) outerModify(key[a], index(b), dfn[a]), key[a] = index(b);
else {
int ans = theKth(dfn[a], dfn[b], k);
if (ans > 0) write(discret[ans]), std::putchar('\n');
else std::cout << "invalid request!\n";
}
}