提交时间:2023-09-19 13:44:27
运行 ID: 103433
#include <algorithm> #include <iostream> #include <cstdio> using namespace std; int n, m; struct fucker { int data[510]; inline bool operator <= (const fucker &x) const { for(int i=1; i<=m; i++) { if(data[i] == x.data[i]) continue; return data[i] < x.data[i]; } return true; } } a[510], b[510]; void guibing(int start,int end) { if(start >= end) return; int mid = (start+end)/2; guibing(start,mid); guibing(mid+1,end); int left_index = start; int right_index = mid+1; int t = start; while(left_index<=mid && right_index<=end) { if(a[left_index] <= a[right_index]) { b[t] = a[left_index]; left_index++; } else { b[t] = a[right_index]; right_index++; } t++; } while(left_index <= mid) { b[t] = a[left_index]; t++; left_index++; } while(right_index <= end) { b[t] = a[right_index]; t++; right_index++; } for(int i=start; i<=end; i++) a[i] = b[i]; return; } int main() { scanf("%d%d", &n, &m); for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) scanf("%d", &a[i].data[j]); } guibing(1, n); for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) printf("%d ", a[i].data[j]); putchar('\n'); } return 0; }