RE求助
查看原帖
RE求助
108476
MC之谜楼主2020/12/16 21:23
#include<bits/stdc++.h>
using namespace std;
set<int> s;
vector<int> v; 
int a[1000005];
int n,m,tot;
int k,x,y;

int lowbit(int x){
	return x&(-x);
}

int update(int x,int y){
	for(int i=x;i<=n;i+=lowbit(i))
	a[i]+=y;
}

int query(int x){
	int sum=0;
	for(int i=x;i>0;i-=lowbit(i))
	sum+=a[i];
	return sum;
}

int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&x);
		v.push_back(x);
		s.insert(x);
		if(v.size()-s.size()==tot)
			update(i,1);
		else tot=v.size()-s.size();
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&x,&y);
		printf("%d",query(y)-query(x-1));
		putchar('\n');
	}
}
2020/12/16 21:23
加载中...