ZeroJudge A915: 二維點排序

給你 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

發佈留言