记录编号 358223 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [東方] 博丽灵梦 梦想妙珠 最终得分 100
用户昵称 GravatarAntiLeaf 是否通过 通过
代码语言 C++ 运行时间 0.967 s
提交时间 2016-12-15 07:22:17 内存使用 3.72 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=100010;
struct Q{
	int l,r,c,id,belong;
	bool operator<(const Q &q)const{
		if(belong!=q.belong)return belong<q.belong;
		return r<q.r;
	}
}q[maxn];
int n,B,m,a[maxn],l,r,cnt[maxn<<1]={0},ans[maxn];
int main(){
	freopen("mengxiangmiaozhu.in","r",stdin);
	freopen("mengxiangmiaozhu.out","w",stdout);
	scanf("%d",&n);
	B=(int)(sqrt(n)+0.5);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&q[i].l,&q[i].r,&q[i].c);
		q[i].belong=(q[i].l-1)/B+1;
		q[i].id=i;
	}
	sort(q+1,q+m+1);
	l=r=1;cnt[a[1]]=1;
	for(int i=1;i<=m;i++){
		if(l>q[i].l)for(int k=l-1;k>=q[i].l;k--)cnt[a[k]]++;
		if(r<q[i].r)for(int k=r+1;k<=q[i].r;k++)cnt[a[k]]++;
		if(l<q[i].l)for(int k=l;k<q[i].l;k++)cnt[a[k]]--;
		if(r>q[i].r)for(int k=r;k>q[i].r;k--)cnt[a[k]]--;
		ans[q[i].id]=cnt[q[i].c];
		l=q[i].l;r=q[i].r;
	}
	for(int i=1;i<=m;i++)printf("%d\n",ans[i]);
	return 0;
}