rt,下了数据本地 AC 了,但是提交全 RE /kel
#include <bits/stdc++.h>
using namespace std;
#define int long long
int t[5000005],n,m,a[5000005],lst[5000005],ans[5000005];
int add(int x,int p){while(x <= n) t[x] += p,x += (x & (-x));}
int sum(int x){int ans = 0;while(x) ans += t[x],x -= (x & (-x));return ans;}
struct query{int l,r,id;}q[5000005];
bool cmp(query a,query b){return a.r < b.r;}
signed main(){
cin >> n;
for(int i = 1;i <= n;i ++) cin >> a[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+m+1,cmp);int j = 1;
for(int i = 1;i <= n;i ++){
int c = a[i];if(!lst[c]) add(i,1);
else add(lst[c],-1),add(i,1);
lst[c] = i;
while( j <= m && q[j].r == i ) ans[q[j].id] = sum(q[j].r) - sum(q[j].l - 1),j ++;
if(j > m) break;
}
for(int i = 1;i <= m;i ++) cout << ans[i] << "\n";
return 0;
}