#include <bits/stdc++.h> using namespace std; const int N=2e5+10; int f[N]; int sz[N]; long long sum[N]; void init(int n) { for(int i=1;i<=n;i++) { f[i]=i; sz[i]=1; } } int find(int a) { if(f[a]==a) return a; return find(f[a]); } void merge(int a,int b) { int fa = find(a); int fb = find(b); if(fa==fb)return; if(fa<fb)swap(fa,fb); sum[fa]+=sum[fb]; sz[fa]+=sz[fb]; f[fb]=fa; } int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) cin>>sum[i]; init(n); while(m--) { int op; cin>>op; if(op==1) { int l,r; cin>>l>>r; for(int i=l;i<r;i++) { merge(i,i+1); i = find(i+1)-1; } } else { int x; cin>>x; x = find(x); printf("%.10lf\n",1.0*sum[x]/sz[x]); } } return 0; } 为啥我的超时了呀