题解 C 成绩分析
成绩分析
https://ac.nowcoder.com/acm/contest/6607/C
由于原数列已有序,可直接在中间找中位数,平均数即为所有数的和除以 。
当 为偶数时,要取 和 的平均值。
这里的平均数和中位数在 为偶数时可能不为整数,需要特殊处理一下。
#include<bits/stdc++.h> #define re register using namespace std; inline int read(){ re int t=0;re char v=getchar(); while(v<'0')v=getchar(); while(v>='0')t=(t<<3)+(t<<1)+v-48,v=getchar(); return t; } int n,ans,a[102]; signed main(){ n=read(); for(re int i=1;i<=n;++i)ans+=(a[i]=read()); if(n&1)ans/=n,ans=abs(ans-a[n/2+1]); else ans*=2,ans/=n,ans-=a[n/2]+a[n/2+1],ans/=2,ans=abs(ans); printf("%d",ans); }