刺瞎了双眼啊,少了个LL,直接与一等奖失之交臂,二等里的第一,实在是一个悲伤的结局
归根结底,现场的状态弱爆了,这点放平常应该发现的
/**竟然WA在中间结果可能超32位上,害了我两天白费了
*/
#include <stdio.h>
#define L(i) (i)<<1
#define R(i) (i)<<1|1
#define N 100001
struct node
{
int l,r,sum;
}st[N<<2];
void build(int l,int r,int id)
{
st[id].l = l;
st[id].r = r;
st[id].sum = r - l + 1;
if(l < r)
{
int mid = (l + r) / 2;
build(l,mid,L(id));
build(mid + 1,r,R(id));
}
}
int update(int p,int id)
{
st[id].sum --;
if(st[id].l == st[id].r)
return st[id].l;
return st[L(id)].sum >= p? update(p,L(id)) : update(p - st[L(id)]