Guest User

Untitled

a guest
Jun 19th, 2018
101
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. int main()
  5. {
  6.     unsigned int t;
  7.     scanf("%ud",&t);
  8.     long int swap;
  9.     long int n,arr[100000];
  10.     long int i,j,k;
  11.  
  12.     while(t--)
  13.     {
  14.         scanf("%ld",&n);
  15.         for(i=0;i<n;i++)
  16.         {
  17.             scanf("%ld",&arr[i]);
  18.         }
  19.  
  20.         long int merge(long int A,long int p,long int q,long int r)
  21.         {
  22.             int n1,n2;
  23.             n1=q−p+1;
  24.             n2=r−q;
  25.             int L[n1],R[n2];
  26.             for(i=0;i<n1;i++)
  27.                 L[i]=A[p+i−1];
  28.             for(j=0;j<n2;j++)
  29.                 R[j]=A[q+j];
  30.             L[n1]=INT_MAX;
  31.             R[n2]=INT_MAX;
  32.             i=0;
  33.             j=0;
  34.             swap=0;
  35.             for(k=p;k<r;k++)
  36.             {
  37.             if(R[j]<L[i])
  38.                 swap=swap+n1−i+1;
  39.             if(L[i]≤R[j])
  40.             {
  41.                 A[k]=L[i];
  42.                 i=i+1;
  43.             }
  44.             else
  45.             {
  46.                 A[k]=R[j];
  47.                 j=j+1;
  48.             }
  49.             return swap;
  50.         }
  51.  
  52.         long int mergesort(long int A,int p,long int r)
  53.         {
  54.             swap=0;
  55.             if(p<r)
  56.             {
  57.                 q=(p+r)/2;
  58.                 swap=swap+mergesort(A,p,q);
  59.                 swap=swap+mergesort(A,q+1,r);
  60.                 swap=swap+merge(A,p,q,r);
  61.                 return swap;
  62.             }
  63.         }
  64.  
  65.         swap=mergesort(arr,0,n-1);
  66.  
  67.         printf("%ld",swap);
  68.         printf("\n");
  69.     }
  70.     return 0;
  71. }
Add Comment
Please, Sign In to add comment