Guest User

Untitled

a guest
Jun 20th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.51 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <limits.h>
  3.  
  4. long int i,j,k,swap,q;
  5. long int L[50000],R[50000];
  6.  
  7.         long int merge(long int A,long int p,long int q,long int r)
  8.         {
  9.             long int n1,n2;
  10.             n1=q-p+1;
  11.             n2=r-q;
  12.             for(i=0;i<n1;i++)
  13.                 L[i]=A[p+i];
  14.             for(j=0;j<n2;j++)
  15.                 R[j]=A[q+j+1];
  16.             L[n1]=INT_MAX;
  17.             R[n2]=INT_MAX;
  18.             i=0;
  19.             j=0;
  20.             swap=0;
  21.             for(k=p;k<r;k++)
  22.             {
  23.             if(R[j]<L[i])
  24.                 swap=swap+n1-i;
  25.             if(L[i]<R[j])
  26.             {
  27.                 A[k]=L[i];
  28.                 i=i+1;
  29.             }
  30.             else
  31.             {
  32.                 A[k]=R[j];
  33.                 j=j+1;
  34.             }
  35.             }
  36.             return swap;
  37.         }
  38.  
  39.         long int mergesort(long int A,long int p,long int r)
  40.         {
  41.             swap=0;
  42.             if(p<r)
  43.             {
  44.                 q=(p+r)/2;
  45.                 swap=swap+mergesort(A,p,q);
  46.                 swap=swap+mergesort(A,q+1,r);
  47.                 swap=swap+merge(A,p,q,r);
  48.                 return swap;
  49.             }
  50.         }
  51.  
  52. int main()
  53. {
  54.     unsigned int t;
  55.     scanf("%ud",&t);
  56.     long int n,arr[100000];
  57.  
  58.     while(t--)
  59.     {
  60.         scanf("%ld",&n);
  61.         for(i=0;i<n;i++)
  62.         {
  63.             scanf("%ld",&arr[i]);
  64.         }
  65.  
  66.         swap=mergesort(arr,0,n-1);
  67.  
  68.         printf("%ld",swap);
  69.         printf("\n");
  70.     }
  71.     return 0;
  72. }
Add Comment
Please, Sign In to add comment