• (比赛)C


    C - 小Q系列故事——最佳裁判

    Time Limit:200MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

    Description

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

    Input

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

    Output

      请计算并输出最佳裁判的编号,每组数据输出占一行,若有多人并列最佳裁判,只要求输出编号最小的那个。 
      特别说明:裁判编号按照打分的顺序从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
    ",k);
    72     }
    73     return 0;
    74 }
    View Code
     
     
     
     
     
     
  • 相关阅读:
    进程和线程的主要区别
    Mysql 指定字段数据排序 以及django的实现
    java String
    阿里云 邮件发送(Python)
    Python实现类似JavaScript 的Json对象
    JAVA 学习笔记
    记录一个MySql 分区表+Gap锁引起插入超时的案例
    ThreadPoolExecutor源码中的适配器模式
    Oracle 查询真实执行计划
    简单分析FactoryBean
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/5696202.html
Copyright © 2020-2023  润新知