比赛 2025.3.6 评测结果 WWWWWWWWWW
题目名称 采花 最终得分 0
用户昵称 彭欣越 运行时间 2.718 s
代码语言 C++ 内存使用 7.93 MiB
提交时间 2025-03-06 21:34:43
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1000010;
int n,c,m,t[N],r[N],c1[N];
int s1[N],s2[N];
struct node {
    int l,r,id;
}a[N];
bool cmp (node x,node y) {
    return x.r<y.r;
}
int lowbit (int x) {
    return x&-x;
}
void add (int x,int v) {
	while (x<=n) {
		c1[x]+=v;
		x+=lowbit(x);
	}
} 
int query (int x) {
	int cnt=0;
	while (x>0) {
		cnt+=c1[x];
		x-=lowbit(x);
	}
	return cnt;
}
int main(){
	freopen("1flower.in","r",stdin);
    freopen("1flower.out","w",stdout);
    cin >> n >> c >> m;
    for (int i=1;i<=n;i++) {
        cin >> t[N];
    }
    for (int i=1;i<=m;i++) {
        cin >> a[i].l >> a[i].r;
        a[i].id=i;
    }
    sort(a+1,a+n+1,cmp);
    int j=1;
    for (int i=1;i<=m;i++) {
        for (;j<=a[i].r;j++) {
            if (!s1[t[j]]) s1[t[j]]=j;
            else {
                if (!s2[t[j]]) {
                    add(s1[t[j]],1);
                    s2[t[j]]=j;
                }else{
                    add(s1[t[j]],-1);
                    add(s2[t[j]],1);
                    s1[t[j]]=s2[t[j]];
                    s2[t[j]]=j;
                }
            }
        }
        r[a[i].id]=query(a[i].r)-query(a[i].l-1);
    }
    for (int i=1;i<=m;i++) cout << r[i] <<endl;
	return 0;

}