首页 > ACM题库 > HDU-杭电 > HDU 4520-小Q系列故事――最佳裁判-模拟-[解题报告]HOJ
2015
07-17

HDU 4520-小Q系列故事――最佳裁判-模拟-[解题报告]HOJ

小Q系列故事――最佳裁判

问题描述 :

  过去的2012年对小Q来说是很悲催的一年,失恋了12次,每次都要郁闷1个来月。
  好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体育节目来麻醉自己,比如伦敦奥运会期间,小Q就常常在周末邀上一群单身同事聚在自己的蜗居,一边畅饮啤酒,一边吹牛。
  小Q最喜欢看的是跳水,主要原因也是因为这个项目有中国人参加,而且中国队员获胜的几率很大,一般不会再给自己添堵,不然何谈看体育疗情伤呢。
  跳水项目的一个重要环节就是裁判打分,小Q他们有时候会觉得某个裁判不公平,是不是有意在压中国队员的分数。于是每当一个队员跳水完毕,他们几个也像电视上的裁判那样给队员打分,并且规定,谁的分数和最终得分最接近谁就是他们当中的最佳裁判,现场奖励啤酒一杯!
  其中,最终得分是这样计算的:N个人打分,去掉一个最高分,去掉一个最低分,然后剩余分数相加,再除以N-2即为最终得分。
  凭借“看体育疗情伤”而练就的专业体育知识,小Q几乎每局必胜,这一夜,小Q注定要烂醉如泥了……

输入:

  输入包含多组测试用例。
  每组测试用例首先是一个整数N,表示裁判的人数,然后接着是N个实数,表示N个裁判的打分Pi,N为0时结束输入。
  [Technical Specification]
  5 <= N <= 20
  0<=Pi<=10

输出:

  输入包含多组测试用例。
  每组测试用例首先是一个整数N,表示裁判的人数,然后接着是N个实数,表示N个裁判的打分Pi,N为0时结束输入。
  [Technical Specification]
  5 <= N <= 20
  0<=Pi<=10

样例输入:

5 8.3 9.2 8.7 8.9 9.0
0

样例输出:

4

#include<stdio.h>
#include<math.h>
int main()
{
    int n,i;
    double a[22],mmax,mmin,sum,mid;
    while(scanf("%d",&n)!=EOF)
    {
        if(!n)break;
        sum=0;mmax=0;mmin=10;
        for(i=1;i<=n;i++)
        {
            scanf("%lf",&a[i]);
            sum+=a[i];
            if(mmax<a[i])  mmax=a[i];
            if(mmin>a[i])  mmin=a[i];
        }
        double best=(sum-mmax-mmin)/(double)(n-2);
        int pos;
        mmin=11;
        for(i=1;i<=n;i++)
        {
              mid=fabs(best-a[i]);
              if(mid<mmin)  {mmin=mid;pos=i;}
        }
        printf("%d\n",pos);
    }

    return 0;
}

参考:http://blog.csdn.net/hnust_xiehonghao/article/details/9256909