C - 小Q系列故事——最佳裁判
Time Limit:200MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
过去的2012年对小Q来说是很悲催的一年,失恋了12次,每次都要郁闷1个来月。
好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体育节目来麻醉自己,比如伦敦奥运会期间,小Q就常常在周末邀上一群单身同事聚在自己的蜗居,一边畅饮啤酒,一边吹牛。
小Q最喜欢看的是跳水,主要原因也是因为这个项目有中国人参加,而且中国队员获胜的几率很大,一般不会再给自己添堵,不然何谈看体育疗情伤呢。
跳水项目的一个重要环节就是裁判打分,小Q他们有时候会觉得某个裁判不公平,是不是有意在压中国队员的分数。于是每当一个队员跳水完毕,他们几个也像电视上的裁判那样给队员打分,并且规定,谁的分数和最终得分最接近谁就是他们当中的最佳裁判,现场奖励啤酒一杯!
其中,最终得分是这样计算的:N个人打分,去掉一个最高分,去掉一个最低分,然后剩余分数相加,再除以N-2即为最终得分。
凭借“看体育疗情伤”而练就的专业体育知识,小Q几乎每局必胜,这一夜,小Q注定要烂醉如泥了......
好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体育节目来麻醉自己,比如伦敦奥运会期间,小Q就常常在周末邀上一群单身同事聚在自己的蜗居,一边畅饮啤酒,一边吹牛。
小Q最喜欢看的是跳水,主要原因也是因为这个项目有中国人参加,而且中国队员获胜的几率很大,一般不会再给自己添堵,不然何谈看体育疗情伤呢。
跳水项目的一个重要环节就是裁判打分,小Q他们有时候会觉得某个裁判不公平,是不是有意在压中国队员的分数。于是每当一个队员跳水完毕,他们几个也像电视上的裁判那样给队员打分,并且规定,谁的分数和最终得分最接近谁就是他们当中的最佳裁判,现场奖励啤酒一杯!
其中,最终得分是这样计算的:N个人打分,去掉一个最高分,去掉一个最低分,然后剩余分数相加,再除以N-2即为最终得分。
凭借“看体育疗情伤”而练就的专业体育知识,小Q几乎每局必胜,这一夜,小Q注定要烂醉如泥了......
Input
输入包含多组测试用例。
每组测试用例首先是一个整数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
Output
请计算并输出最佳裁判的编号,每组数据输出占一行,若有多人并列最佳裁判,只要求输出编号最小的那个。
特别说明:裁判编号按照打分的顺序从1开始,依次类推,最后一人编号为N。
特别说明:裁判编号按照打分的顺序从1开始,依次类推,最后一人编号为N。
Sample Input
5 8.3 9.2 8.7 8.9 9.0 0
Sample Output
4
//比赛除了练习过的,就做出这个了,纪念一下
//题目很简单,如果排序的话有个坑,就是题目是要输出最小的编号的,而不是数组编号最小的,如果有几个最佳裁判,而编号大的在前面,就会出错
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <math.h>
5
6 struct people
7 {
8 int num;
9 double fen;
10 }person [21];
11
12 using namespace std;
13 int main()
14 {
15 int N;
16 double all,temp,min;
17 int t;
18 int i,j,k;
19 while (scanf("%d",&N)&&N)
20 {
21 for (i=1;i<=N;i++)
22 {
23 scanf("%lf",&person[i].fen);
24 person[i].num=i;
25 }
26
27 for (i=1;i<=N;i++)
28 {
29 k=i;
30 for (j=i+1;j<=N;j++)
31 {
32 if (person[j].fen<person[k].fen)
33 {
34 k=j;
35 }
36 }
37 if (k!=i)
38 {
39 temp=person[k].fen;
40 person[k].fen=person[i].fen;
41 person[i].fen=temp;
42
43 t=person[k].num;
44 person[k].num=person[i].num;
45 person[i].num=t;
46 }
47 }
48 all=0;
49 for (i=2;i<=N-1;i++)
50 all+=person[i].fen;
51 all=all/(N-2);
52
53 k=person[1].num;
54 min=fabs(all-person[1].fen);
55 for (i=1;i<=N;i++)
56 {
57 if (fabs(all-person[i].fen)<=min)
58 {
59 if ((fabs(all-person[i].fen)==min)&&person[i].num<k)
60 {
61 k=person[i].num;
62 min=fabs(all-person[i].fen);
63 }
64 else if (fabs(all-person[i].fen)<min)
65 {
66 k=person[i].num;
67 min=fabs(all-person[i].fen);
68 }
69 }
70 }
71 printf("%d\n",k);
72 }
73 return 0;
74 }