inline void del(int now){(--vis[now])==0?mapp.set(now,0),mapp2.set(200000-now,0):0;}
inline void add(int now){(vis[now]++)==0?mapp.set(now,1),mapp2.set(200000-now,1):0;}
while (q[i].l<l) add(a[--l]);
while (q[i].r>r) add(a[++r]);
while (q[i].l>l) del(a[l++]);
while (q[i].r<r) del(a[r--]);
这样子的写法是正确的
inline void del(int now){(--vis[a[now]])?0:mapp.set(a[now],0),mapp2.set(200000-a[now],0);}
inline void add(int now){(vis[a[now]]++)?0:mapp.set(a[now],1),mapp2.set(200000-a[now],1);}
while (q[i].l<l) add((--l));
while (q[i].r>r) add((++r));
while (q[i].l>l) del((l++));
while (q[i].r<r) del((r--));
但这样就会莫名出锅
想知道为什么QAQ