Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.27 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define NMAX 1024
  4.  
  5. struct cincupla {
  6.     int a, b, c, d, e;
  7. };
  8.  
  9. typedef struct cincupla cincupla_t;
  10.  
  11. cincupla_t A[NMAX], B[NMAX];
  12.  
  13. void merge_sort(int l, int r, int cmp(cincupla_t a, cincupla_t b)) {
  14.     int m = (l + r) / 2, i, j, k;
  15.     if (r - l < 2) {
  16.         return;
  17.     }
  18.     merge_sort(l, m, cmp);
  19.     merge_sort(m, r, cmp);
  20.     for (i = l; i < m; i++) {
  21.         B[i-l] = A[i];
  22.     }
  23.     i = l; j = m; k = l;
  24.     while (i < m || j < r) {
  25.         if (j == r || (i < m && cmp(B[i-l], A[j]) <= 0)) {
  26.             A[k++] = B[i-l];
  27.             i++;
  28.         } else {
  29.             A[k++] = A[j++];
  30.         }
  31.     }
  32. }
  33.  
  34. int cmpA(cincupla_t x, cincupla_t y) {
  35.     return x.a - y.a;
  36. }
  37.  
  38. int cmpB(cincupla_t x, cincupla_t y) {
  39.     return x.b - y.b;
  40. }
  41.  
  42. int cmpC(cincupla_t x, cincupla_t y) {
  43.     return x.c - y.c;
  44. }
  45.  
  46. int cmpD(cincupla_t x, cincupla_t y) {
  47.     return x.d - y.d;
  48. }
  49.  
  50. int cmpE(cincupla_t x, cincupla_t y) {
  51.     return x.e - y.e;
  52. }
  53.  
  54. int main() {
  55.     int n, i;
  56.     scanf("%d", &n);
  57.     for (i = 0; i < n; i++) {
  58.         scanf("%d %d %d %d %d", &A[i].a, &A[i].b, &A[i].c, &A[i].d, &A[i].e);
  59.     }
  60.     merge_sort(0, n, cmpE);
  61.     merge_sort(0, n, cmpD);
  62.     merge_sort(0, n, cmpC);
  63.     merge_sort(0, n, cmpB);
  64.     merge_sort(0, n, cmpA);
  65.     for (i = 0; i < n; i++) {
  66.         printf("%d %d %d %d %d\n", A[i].a, A[i].b, A[i].c, A[i].d, A[i].e);
  67.     }
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement