// 根据下标 得到相应块...我感觉..这个就是核心了= =.
// vlen = sqrt(1.0 * n);
inline int getid(int index) { return (index - 1) / vlen + 1; }
void add()
{
// Todo : 添加一个元素 同时维护块信息
}
void sub(int index)
{
// Todo : 删除一个元素 同时维护块信息
}
void chage(int index)
{
// Todo : 改变一个元素 同时维护块信息
// 找到块
int block_id = getid(index);
// 修改块信息 如果对块内元素有影响 也要修改块内元素
}
int query(int l, int r, int dth, int p)
{
int res = 0;
int i, lid, rid;
lid = getid(l); rid = getid(r);
if (lid != rid) { // 分区间讨论 左右端点不在同一区间 左右端点在同一区间
for (i=l; i<=getid(l)*vlen; ++i) // 单个元素
;
for (i=lid+1; i<=rid-1; ++i) // 整块维护的信息
;
for (i=(getid(r)-1)*vlen+1; i<=r; ++i) // 单个元素
;
} else {
for (i=l; i<=r; ++i) // 单个元素
;
}
return res;
}