样例过了显示"Too short on line 1"
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxN=500010;
struct ask{
int l,r,id;
} s[maxN];
int q,num[maxN],ans[maxN],c[maxN];
bool cmp(ask a1,ask a2){
if(a1.l/q==a2.l/q) return a1.r<a2.r;
else return a1.l<a2.l;
}
signed main(){
int n,m,k;
cin>>n>>m>>k;
q=sqrt(n);
for(int i=1;i<=n;i++) cin>>num[i];
for(int i=1;i<=m;i++){
cin>>s[i].l>>s[i].r;
s[i].id=i;
}
sort(s+1,s+m+1,cmp);
int p=1,t=0,L=1,R=0;
for(int i=0;i<=q;i++){
while(s[p].l/q==i){
while(L>s[p].l){
L--;
t+=2*c[num[L]]+1;
c[num[L]]++;
}
while(L<s[p].l){
c[num[L]]--;
t-=2*c[num[L]]+1;
L++;
}
while(R>s[p].r){
c[num[R]]--;
t-=2*c[num[R]]+1;
R--;
}
while(R<s[p].r){
R++;
t+=2*c[num[R]]+1;
c[num[R]]++;
}
ans[s[p].id]=t;
if(p==m){
for(int j=1;j<=m;j++){
printf("lld",ans[j]);
cout<<" ";
printf("\n");
}
return 0;
}
p++;
}
}
}