5.00
//注意观察题目数据范围很重要 //iostream必须屏蔽才可通过,不然超时 #include<stdio.h> //#include<iostream> #include<algorithm> #include<cstring> using namespace std; inline int read() { int x=0; char ch=getchar(); while(ch<'0'||ch>'9') { ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x; } int n,k,a[1000010],tt[1000]; int vis[120];//用来hash int nn; int main() { n=read(); k=read(); int t,e=0, s=0; while(n--) { t=read(); if(t==1) { a[e]=read(); ++vis[a[e]]; if(e<k) s+=a[e]; else s+=a[e]-a[e-k],vis[a[e-k]]--; ++e; if(e<k) nn=e; else nn=k; } else if(t==2) printf("%d.00\n",s/nn); else if(t==3) { double sum=0,v=1.0*s/nn; for(int i=e-nn; i<e; ++i) sum+=(a[i]-v)*(a[i]-v); printf("%.2lf\n",sum/nn); } else { //找平均数 int cnt=0; for(int i=0; i<101; ++i) if(vis[i]) { cnt+=vis[i]; if(cnt>=(nn+1)/2) { if(nn%2||cnt>(nn+1)/2) { printf("%d.00\n",i); } else { double dt=i++; while(!vis[i]) ++i; printf("%.2lf\n",(dt+i)/2); } break; } } } } return 0; }