PAT 1082. 射擊比賽 (20)
阿新 • • 發佈:2018-04-15
style std mes oid pre form ase span mar
本題目給出的射擊比賽的規則非常簡單,誰打的彈洞距離靶心最近,誰就是冠軍;誰差得最遠,誰就是菜鳥。本題給出一系列彈洞的平面坐標(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 }
新人發帖。。。。。。歡迎討論。。。
PAT 1082. 射擊比賽 (20)