PAT 1082. 射擊比賽 (20)

本題目給出的射擊比賽的規則非常簡單,誰打的彈洞距離靶心最近,誰就是冠軍;誰差得最遠,誰就是菜鳥。本題給出一系列彈洞的平面座標(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


本題比較簡單,我們可以把每個與運動員的信息封裝在一個結構體中。
然後利用sort函數來對結構體數組進行排序。
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node{
 4     int id;
 5     int x;
 6     int y;
 7 }s[10000];
 8 int cmp(struct node a,struct node b)
 9 {
10     return (a.x*a.x+a.y*a.y)<(b.x*b.x+b.y*b.y);
11 }
12 int main()
13 {
14     int n;
15     scanf("%d",&n);
16     for(int i=0;i<n;i++)
17     {
18         scanf("%d %d %d",&s[i].id,&s[i].x,&s[i].y);
19     }
20     sort(s,s+n,cmp);
21     printf("%04d %04d",s[0].id,s[n-1].id);
22     return 0;
23 }

新人發帖。。。。。。歡迎討論。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章