遊戲選角

題目說明

nn 個角色,每個角色有攻擊力和防禦力。 角色的能力值是攻擊力和防禦力的平方和,輸出能力值第二大的攻擊力和防禦力數值。

解題過程

首先宣告整數變數 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;
}