#include<bits/stdc++.h>typedeflonglongll;#define PII pair<ll,ll>usingnamespacestd;/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/constintN=5e4+5;intn,m;intc[N];intlen;PIIans[N];structque{intid,l,r;booloperator<(constque&oth)const{if(l/len!=oth.l/len)returnl<oth.l;if((l/len)&1)returnr<oth.r;elsereturnr>oth.r;}}a[N];/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/llsum=0,cnt[N];voidadd(intx){sum+=cnt[x],cnt[x]++;}voiddel(intx){cnt[x]--,sum-=cnt[x];}/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/signedmain(){cin>>n>>m;for(inti=1;i<=n;i++)cin>>c[i];for(inti=1;i<=m;i++){intl,r;cin>>l>>r;a[i]=que{i,l,r};}len=(int)ceil(sqrt(n));sort(a+1,a+m+1);for(inti=1,l=1,r=0;i<=m;i++){if(a[i].l==a[i].r){ans[a[i].id]=PII{0,1};continue;}while(l>a[i].l)add(c[--l]);while(r<a[i].r)add(c[++r]);while(r>a[i].r)del(c[r--]);while(l<a[i].l)del(c[l++]);ans[a[i].id]=PII{sum,(ll)(a[i].r-a[i].l+1)*(a[i].r-a[i].l)/2};}for(inti=1;i<=m;i++){llgcd=__gcd(ans[i].first,ans[i].second);if(gcd>1){ans[i].first/=gcd;ans[i].second/=gcd;}printf("%lld/%lld\n",ans[i].first,ans[i].second);}return0;}
#include<bits/stdc++.h>usingnamespacestd;/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/constintN=1e6+5;intn,m;intc[N];intans[N];intlen;intcnt1=0,cnt2=0;structque{intl,r,t,id;booloperator<(constque&oth)const{if(l/len!=oth.l/len)returnl<oth.l;if(r/len!=oth.r/len)returnr<oth.r;returnt<oth.t;}}a[N];structupde{intp,c;}b[N];/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/intsum=0,cnt[N];voidadd(intx){if(cnt[x]==0)sum++;cnt[x]++;}voiddel(intx){cnt[x]--;if(cnt[x]==0)sum--;}/// `x` 代表时间, `y` 代表当前处理ivoidcha(intx,inty){if(a[y].l<=b[x].p&&b[x].p<=a[y].r){add(b[x].c);del(c[b[x].p]);}swap(c[b[x].p],b[x].c);}/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/signedmain(){cin>>n>>m;for(inti=1;i<=n;i++)cin>>c[i];for(inti=1;i<=m;i++){charop;cin>>op;if(op=='Q'){intl,r;cin>>l>>r;a[++cnt1]=que{l,r,cnt2,cnt1};}else{intp,c;cin>>p>>c;b[++cnt2]=upde{p,c};}}len=ceil(pow(n,2./3));sort(a+1,a+cnt1+1);for(inti=1,l=1,r=0,t=0;i<=cnt1;i++){while(l>a[i].l)add(c[--l]);while(r<a[i].r)add(c[++r]);while(l<a[i].l)del(c[l++]);while(r>a[i].r)del(c[r--]);while(t<a[i].t)cha(++t,i);while(t>a[i].t)cha(t--,i);ans[a[i].id]=sum;}for(inti=1;i<=cnt1;i++){cout<<ans[i]<<'\n';}return0;}
#include<bits/stdc++.h>#define int long longusingnamespacestd;/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/constintN=1e5+5;intn,m,q;intans[N];intv[N],w[N],c[N];/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/intin[N],out[N];vector<int>arr(1);// 按照DFS顺序的序列structLCA{vector<int>v[N];intcnt;intfa[N][20],dep[N];voidbuild(intx,intf=0){in[x]=++cnt;arr.push_back(x);fa[x][0]=f;dep[x]=dep[f]+1;for(inti=1;i<=19;i++)fa[x][i]=fa[fa[x][i-1]][i-1];for(autoy:v[x]){if(y==f)continue;build(y,x);}out[x]=++cnt;arr.push_back(x);}intlca(intx,inty){if(dep[x]<dep[y])swap(x,y);for(inti=19;i>=0;i--)if(dep[fa[x][i]]>=dep[y])x=fa[x][i];if(x==y)returnx;for(inti=19;i>=0;i--)if(fa[x][i]!=fa[y][i])x=fa[x][i],y=fa[y][i];returnfa[x][0];}};LCAlca;intlen;intcnt1,cnt2;structque{intl,r,t,lca,id;booloperator<(constque&oth)const{if(l/len!=oth.l/len)returnl<oth.l;if(r/len!=oth.r/len)returnr<oth.r;returnt<oth.t;}}a[N];pair<int,int>b[N];intsum,vis[N],cnt[N];voidadd(intx){if(!vis[x]){vis[x]=1;sum+=v[c[x]]*w[++cnt[c[x]]];}else{vis[x]=0;sum-=v[c[x]]*w[cnt[c[x]]--];}}// 此时的时间 t , 和当前处理的区间 [l,r]voidchange(intt,intl,intr){if(vis[b[t].first]){add(b[t].first);swap(c[b[t].first],b[t].second);add(b[t].first);}elseswap(c[b[t].first],b[t].second);}/*~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~*/signedmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);// stdincin>>n>>m>>q;for(inti=1;i<=m;i++)cin>>v[i];for(inti=1;i<=n;i++)cin>>w[i];for(inti=1;i<n;i++){intx,y;cin>>x>>y;lca.v[x].push_back(y);lca.v[y].push_back(x);}for(inti=1;i<=n;i++)cin>>c[i];lca.build(1);for(inti=1;i<=q;i++){intop,x,y;cin>>op>>x>>y;if(op==1){intlc=lca.lca(x,y);if(lc==x)a[++cnt1]=que{in[x],in[y],cnt2,0,cnt1};elsea[++cnt1]=que{out[x],in[y],cnt2,lc,cnt1};}else{b[++cnt2]=make_pair(x,y);}}// solvelen=ceil(pow(2*n,2./3));sort(a+1,a+cnt1+1);for(inti=1,l=1,r=0,t=0;i<=cnt1;i++){while(l>a[i].l)add(arr[--l]);while(r<a[i].r)add(arr[++r]);while(l<a[i].l)add(arr[l++]);while(r>a[i].r)add(arr[r--]);while(t<a[i].t)change(++t,l,r);while(t>a[i].t)change(t--,l,r);if(a[i].lca)add(a[i].lca);ans[a[i].id]=sum;if(a[i].lca)add(a[i].lca);}for(inti=1;i<=cnt1;i++)cout<<ans[i]<<'\n';return0;}
#include<bits/stdc++.h>usingnamespacestd;/*~~~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~~~*/constintN=4e5+5;intn,m;intc[N];intlen;structque{intl,r,id;booloperator<(constque&oth)const{if(l/len!=oth.l/len)returnl<oth.l;returnr<oth.r;}}a[N];/*~~~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~~~*/#define R(x) min(((((x)/len)+1)*len-1), n)intans[N];namespaceLSH{inttot,a[N];voidmain(){sort(a+1,a+tot+1);tot=unique(a+1,a+tot+1)-a-1;for(inti=1;i<=n;i++){c[i]=lower_bound(a+1,a+tot+1,c[i])-a;}}}intpos[N];intst[N],ed[N];/*~~~~~~~~~~~~~~~~~~~~~~ Boundary Line ~~~~~~~~~~~~~~~~~~~~~~*/signedmain(){cin>>n;for(inti=1;i<=n;i++){cin>>c[i];LSH::a[++LSH::tot]=c[i];}LSH::main();cin>>m;for(inti=1;i<=m;i++){intl,r;cin>>l>>r;a[i]=que{l,r,i};}len=ceil(sqrt(n));sort(a+1,a+m+1);intLast_Block=-1,Ans=0;for(inti=1,l=0,r=0;i<=m;i++){if(a[i].l/len==a[i].r/len){for(intj=a[i].l;j<=a[i].r;j++){if(!pos[c[j]])pos[c[j]]=j;ans[a[i].id]=max(ans[a[i].id],j-pos[c[j]]);}for(intj=a[i].l;j<=a[i].r;j++)pos[c[j]]=0;continue;}if(a[i].l/len!=Last_Block){for(intj=l;j<=r;j++)st[c[j]]=ed[c[j]]=0;r=R(a[i].l),l=r+1;Ans=0;}while(r<a[i].r){++r,ed[c[r]]=r;if(!st[c[r]])st[c[r]]=r;Ans=max(Ans,r-st[c[r]]);}intTmp=Ans,L=l;while(l>a[i].l){l--;if(!ed[c[l]])ed[c[l]]=l;Tmp=max(Tmp,ed[c[l]]-l);}ans[a[i].id]=Tmp;while(l<L){if(ed[c[l]]==l)ed[c[l]]=0;l++;}Last_Block=a[i].l/len;}for(inti=1;i<=m;i++)cout<<ans[i]<<'\n';return0;}