給你 N 個二維平面上的點,請你把他們按照以 x 軸座標為第一個關鍵字,y 軸座標為第二關鍵字的方式從小到大來排序。
範例測資
範例輸入 | 範例輸出 |
---|---|
第一行輸入一個正整數 N。 接下來 N 行,第 i 行有兩個個以空格隔開的正整數 x[i] 和 y[i],表示第 i 個點為(x[i], y[i])。 | 輸出 N 行,第 i 行表示排序好後第 i 個點的座標。 |
4 2 4 1 2 3 4 2 3 | 1 2 2 3 2 4 3 4 |
解題思路
將座標收到一個 Pair<int, int> 中,並將這些 Pair 存到一個陣列或Vector中。進行Sort之後使用For迴圈將陣列中的資料依序輸出。
範例程式碼-ZeroJudge A915: 二維點排序
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<pair<int, int>>v;
for (int i = 0; i<N; i++)
{
int x, y;
cin >> x >> y;
pair<int, int> axis;
axis.first = x;
axis.second = y;
v.push_back(axis);
}
sort(v.begin(), v.end());
for (int i = 0; i<N; i++)
{
cout << v[i].first << " " << v[i].second << "\n";
}
}
//ZeroJudge A915
//Dr. SeanXD