是因为我自带大常数体质吗,太离谱了 求大佬康康
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,m,cnt;
int a[N],pre[N],vis[N],ans[N];
struct Seg{
int type,x,y,id;
bool operator <(const Seg& w){
return x<w.x;
}
}e[N];
int c[N];
int lowbit(int x){
return x&-x;
}
void add(int x) {
for (++x; x<=n+1; x+=x&-x) ++c[x];
}
int query(int x) {
int r = 0;
for (++x; x; x^=x&-x) r+=c[x];
return r;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >>n;
for(int i=1;i<=n;i++){
cin >>a[i];
pre[i]=vis[a[i]];
vis[a[i]]=i;
}
cin >>m;
for(int i=1;i<=m;i++){
int l,r; cin >>l>>r;
e[++cnt]={-1,l-1,l-1,i};
e[++cnt]={1,r,l-1,i};
}
sort(e+1,e+cnt+1);
int now=1;
for(int i=1;i<=cnt;i++){
while (now<=e[i].x) add(pre[now++]);
ans[e[i].id]+=e[i].type*query(e[i].y);
}
for(int i=1;i<=m;i++){
cout <<ans[i]<<endl;
}
return 0;
}