比赛 |
2025.3.6 |
评测结果 |
AAAAAAAAAA |
题目名称 |
采花 |
最终得分 |
100 |
用户昵称 |
徐诗畅 |
运行时间 |
15.186 s |
代码语言 |
C++ |
内存使用 |
12.01 MiB |
提交时间 |
2025-03-06 19:57:54 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,m,c,t[N],len,a[N];
struct que{
int l,r,id;
}q[N];
bool cmp(que x,que y){
if(x.l/len==y.l/len) return x.r<y.r;
return x.l<y.l;
}
int res[N];
int main(){
freopen("1flower.in","r",stdin);
freopen("1flower.out","w",stdout);
scanf("%d%d%d",&n,&c,&m); len=sqrt(n);
for(int i = 1;i<=n;i++) scanf("%d",&a[i]);
for(int i = 1;i<=m;i++){
scanf("%d%d",&q[i].l,&q[i].r);
q[i].id=i;
}
sort(q+1,q+1+m,cmp);
int L=0,R=0,ans=0;
for(int i = 1;i<=m;i++){
while(L<q[i].l){
t[a[L]]--;
if(t[a[L]]==1) ans--;
L++;
}
while(L>q[i].l){
L--;
t[a[L]]++;
if(t[a[L]]==2) ans++;
}
while(R<q[i].r){
R++;
t[a[R]]++;
if(t[a[R]]==2) ans++;
}
while(R>q[i].r){
t[a[R]]--;
if(t[a[R]]==1) ans--;
R--;
}
res[q[i].id]=ans;
}
for(int i = 1;i<=m;i++)
printf("%d\n",res[i]);
return 0;
}