題目說明#
給 n 個二維平面上的點,先用 x 座標從大到小排序,如果 x 相同,再用 y 座標從大到小排序。
解題過程#
首先宣告整數變數 n 和陣列 b 並輸入 n
int n;
vector<pair<int, int>> b;
cin >> n;
用 for 迴圈輸入 x, y 座標並用 make_pair() 放在陣列 b 後面
for(int i = 0;i < n ;i++){
int x, y;
cin >> x >> y;
b.push_back(make_pair(x, y));
}
接下來用 sort 排序
sort(b.begin(), b.end());
最後再輸出
for(int j = 0;j < n; j++){
cout << b[j].first << " " << b[j].second << endl;
}
程式就完成了!
完整的程式碼如下
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
vector<pair<int, int>> b;
cin >> n;
for(int i = 0; i < n; i++){
int x, y;
cin >> x >> y;
b.push_back(make_pair(x, y));
}
sort(b.begin(), b.end());
for(int j = 0;j < n; j++){
cout << b[j].first << " " << b[j].second << endl;
}
return 0;
}
