logn查询出现次数

发布时间 2023-05-03 11:59:41作者: Zimo_666
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int n,a[N];
int b[N],c[N];
vector<int> v[N];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		b[i]=a[i];
		c[i]=a[i];
	}
	sort(b+1,b+1+n);
	int len=unique(b+1,b+1+n)-b-1;
	for(int i=1;i<=n;i++){
		a[i]=lower_bound(b+1,b+1+len,a[i])-b;
	}
	for(int i=1;i<=n;i++){
		v[a[i]].push_back(i);
	}
	int m;
	cin>>m;
	for(int i=1;i<=m;i++){
		int l,r,target;
		cin>>l>>r>>target;
		int times=upper_bound(v[target].begin(),v[target].end(),r)-upper_bound(v[target].begin(),v[target].end(),l-1);
		printf("从%d到%d :%d的出现次数为%d\n",l,r,target,times);
	}
	return 0;
}