UVA10057中位数的定义,个数

来源:互联网 发布:字幕视频合成软件 编辑:程序博客网 时间:2024/05/22 12:52

这题主要是求中位数,和中位数相等的数字的个数,和中位数等价的数字的个数。

一个数列中,找一个数字,使得数列中所有数字到这个数的距离和最小,这个数就是中位数。

具体看代码:

#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<string>#include<set>#include<map>#include<iostream>#include<algorithm>#include<vector>#include<queue>using namespace std;const int maxn=1e6+10;const double eps=1e-8;int a[maxn];int main(){    int n;    while(cin>>n)    {        for(int i=1;i<=n;i++)            scanf("%d",&a[i]);        sort(a+1,a+1+n);        int mnum,tnum=0,snum=0;        if(n%2)        {            int tem=n/2+1;            mnum=a[tem];            for(int i=tem;a[i]==a[tem]&&i>0;i--) tnum++;            for(int i=tem+1;a[i]==a[tem]&&i<=n;i++) tnum++;            snum=1;        }        else        {            int tem=n/2;            mnum=a[tem];            for(int i=tem;a[i]==a[tem]&&i>0;i--) tnum++;            for(int i=tem+1;a[i]==a[tem+1]&&i<=n;i++) tnum++;            snum=a[tem+1]-a[tem]+1;        }        cout<<mnum<<' '<<tnum<<' '<<snum<<endl;    }    return 0;}


0 0