样例全过
#include<cstdio>
#include<cmath>
#include<algorithm>
#define int long long
using namespace std;
const int N=5e4+10;
int n,m,bl,cl,cr,ans;
int a[N],vis[N],as[N],fm[N];
struct Node{
int l,r,p;
bool friend operator < (Node a,Node b){
if((a.l/bl)==(b.l/bl)){
if(a.l/bl&1) return a.l<b.l;
else return a.l>b.l;
}else return a.l/bl<b.l/bl;
}
}e[N];
void add(int p){
vis[a[p]]++;
if(vis[a[p]]>1)
ans=ans-(vis[a[p]]-1)*(vis[a[p]]-2)+vis[a[p]]*(vis[a[p]]-1);
}
void cut(int p){
vis[a[p]]--;
if(vis[a[p]]>0)
ans=ans-(vis[a[p]]+1)*vis[a[p]]+(vis[a[p]]-1)*vis[a[p]];
}
signed main(){
scanf("%lld%lld",&n,&m);
bl=sqrt(n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=1;i<=m;i++){
scanf("%lld%lld",&e[i].l,&e[i].r);
e[i].p=i;
}
sort(e+1,e+m+1);
for(int i=1;i<=m;i++){
int L=e[i].l,R=e[i].r;
while(cr<R) add(++cr);
while(cr>R) cut(cr--);
while(cl<L) cut(cl++);
while(cl>L) add(--cl);
as[e[i].p]=ans;
fm[e[i].p]=(R-L)*(R-L+1);
int gcc=__gcd(as[e[i].p],fm[e[i].p]);
as[e[i].p]/=gcc;
fm[e[i].p]/=gcc;
}
for(int i=1;i<=m;i++) printf("%lld/%lld\n",as[i],fm[i]);
return 0;
}