daily pastebin goal
81%
SHARE
TWEET

Untitled

a guest Nov 22nd, 2017 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <omp.h>
  3.  
  4.  
  5.  
  6. int main()
  7. {
  8.     int n=4;
  9.     // 2*n = 2^(m+1)
  10.     int m = 2;
  11.     int i, j, k;
  12.     int A[] = { 2, 6, 3, 8 };
  13.     int *P = (int *)malloc(n * sizeof(int));
  14.     int **R = (int **)malloc((2 * n - 1) * sizeof(int *));
  15.     for (i = 0; i < 2 * n - 1; ++i) {
  16.         R[i] = (int *)malloc(n * sizeof(int));
  17.     }
  18.  
  19. #pragma omp parralel for private(i,j)
  20.     for (i = 0; i <= n - 1; i++)
  21.     {
  22.         for (j = 0; j <= n - 1; j++)
  23.         {
  24.             if (A[i] < A[j])
  25.             {
  26.                 R[i + n - 1][j] = 1;
  27.             }
  28.             else
  29.             {
  30.                 R[i + n - 1][j] = 0;
  31.             }
  32.         }
  33.     }
  34.  
  35. #pragma omp parallel for
  36.     for (j = 0; j <= n - 1; j++) {
  37.         for (k = m; k > 0; k--) {
  38.             for (i = (1 << k)-1; i < (1 << (k + 1)) - 1; i = i + 2) {
  39.                 R[i/2][j] = R[i][j] + R[i + 1][j];
  40.             }
  41.         }
  42.     }
  43.  
  44.     for (j = 0; j <= n - 1; j++)
  45.     {
  46.         P[j] = R[0][j];
  47.     }
  48. #pragma omp parallel for
  49.     for (j = 0; j <= n - 1; j++)
  50.     {
  51.         if (j < P[j])
  52.         {
  53.             if (A[P[j]] != A[j])
  54.             {
  55.                 int x = A[P[j]];
  56.                 A[P[j]] = A[j];
  57.                 A[j] = x;
  58.             }
  59.         }
  60.     }
  61.  
  62.  
  63.     for (i = 0; i < n; i++)
  64.         printf("%d ", A[i]);
  65.     printf("\n");
  66.  
  67.     for (i = 0; i < 2 * n - 1; i++) {
  68.         for (j = 0; j < n; j++)
  69.         {
  70.             printf("%d ", R[i][j]);
  71.         }
  72.         printf("\n");
  73.     }
  74.     return 0;
  75. }
RAW Paste Data
Top