Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define NMAX 1024
- struct cincupla {
- int a, b, c, d, e;
- };
- typedef struct cincupla cincupla_t;
- cincupla_t A[NMAX], B[NMAX];
- void merge_sort(int l, int r, int cmp(cincupla_t a, cincupla_t b)) {
- int m = (l + r) / 2, i, j, k;
- if (r - l < 2) {
- return;
- }
- merge_sort(l, m, cmp);
- merge_sort(m, r, cmp);
- for (i = l; i < m; i++) {
- B[i-l] = A[i];
- }
- i = l; j = m; k = l;
- while (i < m || j < r) {
- if (j == r || (i < m && cmp(B[i-l], A[j]) <= 0)) {
- A[k++] = B[i-l];
- i++;
- } else {
- A[k++] = A[j++];
- }
- }
- }
- int cmpA(cincupla_t x, cincupla_t y) {
- return x.a - y.a;
- }
- int cmpB(cincupla_t x, cincupla_t y) {
- return x.b - y.b;
- }
- int cmpC(cincupla_t x, cincupla_t y) {
- return x.c - y.c;
- }
- int cmpD(cincupla_t x, cincupla_t y) {
- return x.d - y.d;
- }
- int cmpE(cincupla_t x, cincupla_t y) {
- return x.e - y.e;
- }
- int main() {
- int n, i;
- scanf("%d", &n);
- for (i = 0; i < n; i++) {
- scanf("%d %d %d %d %d", &A[i].a, &A[i].b, &A[i].c, &A[i].d, &A[i].e);
- }
- merge_sort(0, n, cmpE);
- merge_sort(0, n, cmpD);
- merge_sort(0, n, cmpC);
- merge_sort(0, n, cmpB);
- merge_sort(0, n, cmpA);
- for (i = 0; i < n; i++) {
- printf("%d %d %d %d %d\n", A[i].a, A[i].b, A[i].c, A[i].d, A[i].e);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement