如果你在你的代码中除读入外都没有用到题目中的 kkk(最大属性值),那你就错了。在树状数组的“单点加”操作中,上限应该为 kkk 而非平常的 nnn。即:
void add(int x, int d) { for (int i = x; i <= k /* 这里是 k*/ ; i += lowbit(i)) tr[i] += d; }