提交时间:2024-03-09 09:31:54
运行 ID: 136458
#include<bits/stdc++.h> using namespace std; int n; struct point { int a; int b; }; point a[100010]; void s(int l,int r) { if(l>=r) { return ; } int i=l; int j=r; int t=l; while(i!=j) { while((a[i].a<a[t].a || a[i].a==a[t].a && a[i].b<a[t].b) && i<j) { i++; } while((a[j].a>a[t].a || a[j].a==a[t].a && a[j].b>a[t].b) && i<j) { j--; } if(i<j) { swap(a[i],a[j]); } } swap(a[l],a[i]); s(l,i-1); s(i+1,r); } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].a; cin>>a[i].b; } s(1,n); for(int i=1;i<=n;i++) { cout<<a[i].a; cout<<" "; cout<<a[i].b; cout<<endl; } return 0; }