比赛 2025.3.6 评测结果 AAAAAAAAAA
题目名称 采花 最终得分 100
用户昵称 flyfree 运行时间 9.947 s
代码语言 C++ 内存使用 29.53 MiB
提交时间 2025-03-06 21:06:52
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pir pair<ll,ll>
#define ls first
#define rs second
#define mp make_pair
#define mod
#define MAXN 1000010
#define qmod(x) (x>mod?x-mod:x)
// By flyfreemrn
inline ll read(){
	ll x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=x*10+c-'0';
		c=getchar();
	}
	return x*f;
}
ll n,m,c;
struct node_bit{
	ll s[MAXN];
	ll lowbit(ll x){
		return x&(-x);
	}
	void modify(ll x,ll val){
		while(x<=n){
			s[x]+=val;
			x+=lowbit(x);
		}
	}
	ll query(ll x){
		ll res=0;
		while(x>0){
			res+=s[x];
			x-=lowbit(x);
		}
		return res;
	}
}bit;
struct node_qs{
	ll l,r,ans,id;
}qs[MAXN];
bool cmp(node_qs qsa,node_qs qsb){
	return qsa.r<qsb.r;
}
ll a[MAXN],pre[MAXN],t[MAXN],re_id[MAXN];
void insert(ll pos){
	pre[pos]=t[a[pos]];
	t[a[pos]]=pos;
	if(pre[pre[pos]])bit.modify(pre[pre[pos]],-1);
	if(pre[pos])bit.modify(pre[pos],1);
}
int main(){
	freopen("1flower.in","r",stdin);
	freopen("1flower.out","w",stdout);
	n=read(),c=read(),m=read();
	for(int i=1;i<=n;i++)a[i]=read();
	for(int i=1;i<=m;i++)qs[i].l=read(),qs[i].r=read(),qs[i].id=i;
	sort(qs+1,qs+1+m,cmp);
	ll r=0;
	for(int i=1;i<=m;i++){
		re_id[qs[i].id]=i;
		while(r<qs[i].r)r++,insert(r);
		qs[i].ans=bit.query(qs[i].r)-bit.query(qs[i].l-1);
	}
	for(int i=1;i<=m;i++)cout<<qs[re_id[i]].ans<<endl;
	return 0;
}