UVA 10057 - A mid-summer night's dream.

来源:互联网 发布:域名抢注上哪个平台好 编辑:程序博客网 时间:2024/05/16 19:54

           这个题就是一个定理的运用:中位数m具有各变量绝对值与其离差绝对值之和最小的性质。当n是偶数时,num[n/2],num[n/2-1]之间的数都与各个数差的绝对值之和是最小的。

#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;int num[1000001];int main(){    //freopen("in.txt","r",stdin);    int n;    while(scanf("%d",&n)!=EOF)    {        for(int i=0; i<n; i++)            scanf("%d",&num[i]);        sort(num,num+n);        if(n%2==1)        {            cout<<num[n/2];            int minn=0;            for(int i=0; i<n&&num[i]<=num[n/2]; i++)                if(num[i]==num[n/2])                    minn++;            cout<<" "<<minn<<" "<<"1"<<endl;        }        else        {            int minn=0;            for(int i=0; i<n&&num[i]<=num[n/2]; i++)                if(num[i]==num[n/2]||num[i]==num[n/2-1])                    minn++;            cout<<num[n/2-1]<<" "<<minn<<" ";             cout<<num[n/2]-num[n/2-1]+1<<endl;        }    }    return 0;}


原创粉丝点击