t了后7个点
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=5e4+10;
int n,m,c[N],pos[N];
LL s[N],ans;
struct Q{
int l;int r;int id;
LL a,b;
}ask[N];
bool cmp(Q a,Q b){
if(pos[a.l]==pos[b.l])return a.r<b.r;
return a.l<a.l;
}
bool cmp_id(Q a,Q b){
return a.id<b.id;
}
void update(int p,int add){
ans-=s[c[p]]*s[c[p]];
s[c[p]]+=add;
ans+=s[c[p]]*s[c[p]];
}
void solve(){
int l=1,r=0;
for(int i=1;i<=m;i++){
for(;r<ask[i].r;r++){
update(r+1,1);
}
for(;r>ask[i].r;r--){
update(r,-1);
}
for(;l<ask[i].l;l++){
update(l,-1);
}
for(;l>ask[i].l;l--){
update(l-1,1);
}
if(ask[i].l==ask[i].r){
ask[i].a=0;ask[i].b=1;
continue;
}
ask[i].a=ans-(ask[i].r-ask[i].l+1);
ask[i].b=(ask[i].r-ask[i].l+1)*(ask[i].r-ask[i].l);
int g=__gcd(ask[i].a,ask[i].b);
ask[i].a/=g;
ask[i].b/=g;
}
}
signed main() {
//freopen("x.in","r",stdin);
//freopen("x.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>c[i];
int bl=sqrt(n);
for(int i=1;i<=n;i++){
pos[i]=(i-1)/bl+1;
}
for(int i=1;i<=m;i++){
cin>>ask[i].l>>ask[i].r;
ask[i].id=i;
}
sort(ask+1,ask+1+m,cmp);
solve();
sort(ask+1,ask+1+m,cmp_id);
for(int i=1;i<=m;i++) cout<<ask[i].a<<"/"<<ask[i].b<<'\n';
return 0;
}