......
for(int i=n-1;i;i--)
if(a[i]==a[i+1]) cnt[i]=cnt[i+1]+1; else cnt[i]=0;
......
for(int i=1;i<=n;i++)
{
if(fa[i]&&fa[i]!=fa[i-1]) update(1, 1, n, ans[fa[i]], n, size[fa[i]]-1);
......
x+=cnt[x]; cnt[x]++; x-=(cnt[x]-1); ans[i]=x;
......
}
这几句话没有看懂,有大佬解释一下吗orz/kel