oioiuououououououououou
by zask_lover_is_lqq @ 2023-09-13 20:14:37
我都过了@[Locix_Elaina_Celome](/user/544571)
```cpp
#include<bits/stdc++.h>
using namespace std;
int rd(int x=0,char c=getchar()){int f=1;while(!isdigit(c))f=(c^'-'?1:-1),c=getchar();while(isdigit(c))x=x*10+(c^48),c=getchar();return x*f;}
using ll=long long;
const int N=4e5+5;
int n,m,k,l=1,r,a[N],bl[N],blk;
ll sum,ans[N],cnt[N];
struct ask{
int l,r,id;
bool friend operator<(const ask&a,const ask&b){
if(bl[a.l]!=bl[b.l])return a.l<b.l;
return a.r<b.r;
}
}q[N];
void add(int x){sum+=cnt[a[x]]++*2+1;}
void del(int x){sum-=cnt[a[x]]--*2-1;}
int main(){
n=rd(),m=rd(),k=rd();blk=n/sqrt(m);
for(int i=1;i<=n;i++)a[i]=rd(),bl[i]=(i-1)/blk+1;
for(int i=1;i<=m;i++)q[i]={rd(),rd(),i};
sort(q+1,q+1+m);
for(int i=1;i<=m;i++){
while(l<q[i].l)del(l++);
while(r>q[i].r)del(r--);
while(l>q[i].l)add(--l);
while(r<q[i].r)add(++r);
ans[q[i].id]=sum;
}for(int i=1;i<=m;i++)printf("%lld\n",ans[i]);
return 0;
}
```
by zask_lover_is_lqq @ 2023-09-13 20:27:22
`now+=1-(cnt[a[l]]<<1)`
是不是写反了
by zask_lover_is_lqq @ 2023-09-13 20:28:36
把13行的`^(belong[l]&1)`删掉就过了
~~世界真奇妙~~
by Locix_Elaina_Celome @ 2023-09-14 17:13:54