本蒟蒻写的树状数组为什么CE……玄关
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+14;
int n,m;
int arr[N],lower[N],tr[N],b[N],ans[N];
struct ji{
int l,r,id;
}q[N];
int lowbit(int x)
{
return x & -x;
}
void add(int x,int k)
{
for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=k;
}
int query(int x)
{
int res=0;
for(int i=x;i;i-=lowbit(i)) res+=tr[i];
return res;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
//add(i,arr[i]);
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>q[i].l>>q[i].r;
q[i].id=i;
}
sort(q+1,q+1+m);
int cnt=1;
for(int i=1;i<=m;i++){
for(int j=cnt;j<=q[i].r;j++){
if(b[arr[j]]) add(b[arr[j]],-1);
add(j,1);
b[arr[j]]=j;
}
cnt=q[i].r+1;
ans[q[i].id]=query(q[i].r)-query(q[i].l-1);
}
for(int i=1;i<=m;i++){
cout<<ans[i]<<endl;
}
return 0;
}