提交时间:2024-03-09 09:50:57

运行 ID: 136485

#include <iostream> using namespace std; int n; struct num { int x, y; }a[1000100], b[1000100]; bool compare(num c, num d) { if(c.x != d.x) return c.x < d.x; return c.y < d.y; } void sort(int l, int r) { if(l >= r) return; int mid = (l + r) / 2; sort(l, mid); sort(mid + 1, r); for(int i = l; i <= r; i++) {b[i].x = a[i].x; b[i].y = a[i].y;} int i = l, j = mid + 1, cur; for(cur = l; cur <= r; cur++) { if(compare(b[i], b[j])) {a[cur].x = b[i].x; a[cur].y = b[i].y; i++;} else {a[cur].x = b[j].x; a[cur].y = b[j].y; j++;} if(i > mid || j > r) break; } while(i <= mid) a[++cur] = b[i++]; while(j <= r) a[++cur] = b[j++]; } int main() { cin >> n; for(int i = 1; i <= n; i++) cin >> a[i].x >> a[i].y; sort(1, n); for(int i = 1; i <= n; i++) cout << a[i].x << " " << a[i].y << endl; return 0; }