PAT B 1082. 射击比赛 (20)

  • 来源:新网
  • 更新日期:2018-04-18

摘要:1082. 射击比赛 (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。

PAT B 1082. 射击比赛 (20)

201508171135308479.jpg

1082. 射击比赛 (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。 输入格式: 输入在第一行中给出一个正整数 N(<= 10 000)。随后 N 行,每行按下列格式给出: ID x y 其中 ID 是运动员的编号(由4位数字组成);x 和 y 是其打出的弹洞的平面坐标(x,y),均为整数,且 0 <= |x|, |y| <= 100。题目保证每个运动员的编号不重复,且每人只打 1 枪。 输出格式: 输出冠军和菜鸟的编号,中间空 1 格。题目保证他们是唯一的。 输入样例: 3 0001 5 7 1020 -1 3 0233 0 -1 输出样例: 0233 0001

使用结构体 和 algorithm 的 sort() 对 距离进行排序,输出最大最小的ID

#include<cstdio> #include<algorithm> const int maxn = 10010; using namespace std; struct shoot{ int id; // id int x,y; // 坐标 int L; // x平方加y平方 }athlete[maxn]; bool cmp(shoot a,shoot b){ // 排升序序 return a.L<b.L; // 越小的距离越近 } int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d %d %d",&athlete[i].id,&athlete[i].x,&athlete[i].y); athlete[i].L = athlete[i].x * athlete[i].x + athlete[i].y * athlete[i].y; } sort(athlete,athlete+n,cmp); printf("%04d %04dn",athlete[0].id,athlete[n-1].id); return 0; }

个人域名 Stone Cave
CSDN: CSDN-Mason_Xu
开源中国: OSChina-Masonxu
Github: Mason_xu