如果你按照下面这样写会T完:
struct node{int l,r,id,k;}q[N];
for(int i = 1;i <= m;i++)
q[i] = {rd(),rd(),i,(q[i].l-1)/nn+1};
猜测原因是程序在运行时先计算一个{rd(),rd(),i,(q[i].l-1)/nn+1}的结构体,然后再赋给q[i],所以q[i].k会等于0,但是上述代码我在本地运行能过。
所以要改成:
for(int i = 1;i <= m;i++)
q[i] = {rd(),rd(),i},q[i].k = (q[i].l-1)/nn+1;