題目說明#
有 \(n\) 個角色,每個角色有攻擊力和防禦力。
角色的能力值是攻擊力和防禦力的平方和,輸出能力值第二大的攻擊力和防禦力數值。
解題過程#
首先宣告整數變數 n 並輸入,在宣告
陣列 a
int n;
cin >> n;
vector<pair<int, int>>a;
輸入 x, y 並用 make_pair 放在陣列 a 後面
for(int i = 0; i < n; i++)
{
int x, y;
cin >> x >> y;
a.push_back(make_pair(x, y));
}
使用內建函式 sort
sort(a.begin(), a.end(), LESS);
在 main 函式前寫比較函式 LESS , 比較 a 的攻擊力平方加上 a 的防禦力平方與 b 的攻擊力平方加上 b 的防禦力平方
int LESS(pair<int, int>a,pair<int, int>b) {
return pow(a.first, 2)+ pow(a.second, 2) > pow(b.first, 2)+ pow(b.second, 2);
}
最後在輸出第二大的角色
cout << a[1].first << ' ' << a[1].second;
程式就完成了!
完整的程式碼如下
#include <bits/stdc++.h>
using namespace std;
int LESS(pair<int, int>a,pair<int, int>b) {
return pow(a.first, 2)+ pow(a.second, 2) > pow(b.first, 2)+ pow(b.second, 2);
}
int main() {
int n;
cin >> n;
vector<pair<int, int>>a;
for(int i = 0; i < n; i++)
{
int x, y;
cin >> x >> y;
a.push_back(make_pair(x, y));
}
sort(a.begin(), a.end(), LESS);
cout << a[1].first << ' ' << a[1].second;
return 0;
}
