1 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; double a[N]; int main() { int n; cin>>n; int maxid,minid; //最大值最小值所在的位置 double sum=0; for(int i=1;i<=n;i++) { cin>>a[i]; if(i==1||a[i]>a[maxid]) { maxid=i; } if(i==1||a[i]<a[minid]) { minid=i; } sum+=a[i]; } sum=sum-a[maxid]-a[minid]; //除了最大值和最小值以外的总和 double ave=sum/(n-2); //计算平均值 double res=0; for(int i=1;i<=n;i++) { if(i==maxid||i==minid) continue; //如果是最大值或最小值所在的位置,那么就继续 double t=abs(a[i]-ave); //计算当前误差 if(t>res) //保留最大差值 { res=t; } } cout<<fixed<<setprecision(2)<<ave<<" "<<res; return 0; }
- 1
Information
- ID
- 897
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 312
- Accepted
- 59
- Uploaded By