乙级|1082.射击比赛

题目描述

本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。

输入描述

输入在第一行中给出一个正整数 N(≤ 10 000)。随后 N 行,每行按下列格式给出:
ID x y
其中 ID 是运动员的编号(由 4 位数字组成);xy是其打出的弹洞的平面坐标(x,y),均为整数,且 0 ≤ |x|, |y| ≤ 100。题目保证每个运动员的编号不重复,且每人只打 1 枪。

输出描述

输出冠军和菜鸟的编号,中间空 1 格。题目保证他们是唯一的。

输入例子

3
0001 5 7
1020 -1 3
0233 0 -1

输出例子

0233 0001

我的代码

#include<stdio.h>
typedef struct list{
    char id[5];
    int x;
    int y;
    int sum;
}mylist;
int main(){
    int n,i,j;
    mylist a[10001],t;

    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%s %d %d",a[i].id,&a[i].x,&a[i].y);
        a[i].sum=a[i].x*a[i].x+a[i].y*a[i].y;
    }

    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++){
            if(a[i].sum<a[j].sum){
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }

    printf("%s %s",a[n-1].id,a[0].id);
    return 0;
}

我的分析

这道题我是用了一个结构体,将每一名选手的id,x,y和它们距离(0,0)的距离sum(sum=xx+yy),然后就是将每一名选手的信息输入,在按照它们sum的大小来进行排序,最后只要输出第一个和最后一个人的id就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,777评论 0 2
  • 昨晚彻底闹掰,他又动了手,我喊了警察,我妈躺在医院旁边奄奄一息,吃不进去,吃了总吐,警察不让我回去,怕他们走了以后...
    文净阅读 1,365评论 0 0
  • 1. 克隆代码库 git clone git@192.168.1.105:zxy123/peanut.git 2....
    Y丶小琪阅读 1,930评论 0 0
  • 奇思妙想·江南皮革厂 作者:林陌鹿 1初六日,雾霾。南方的雾霾不似北方,因为沙尘的关系,北方暗黄,南方谲白。很多年...
    简黛玉阅读 4,806评论 3 17
  • 李春天和她的男友大二时相恋,她对那个男生一见钟情。没多久就搬出去和那个男生同居了。这个消息震碎了我对李春天的全部印...
    暖暖一叶舟阅读 2,615评论 0 1