Advertisement
niamul64

/// uva 10107 with merge sort

Jun 11th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. /// uva 10107 with merge sort
  2. #include<stdlib.h>
  3. #include<stdio.h>
  4.  
  5. void merge(int arr[], int l, int m, int r)
  6. {
  7.     int i, j, k;
  8.     int n1 = m - l + 1;
  9.     int n2 =  r - m;
  10.  
  11.     int L[n1], R[n2];
  12.  
  13.  
  14.     for (i = 0; i < n1; i++)
  15.         L[i] = arr[l + i];
  16.     for (j = 0; j < n2; j++)
  17.         R[j] = arr[m + 1+ j];
  18.  
  19.     i = 0;
  20.     j = 0;
  21.     k = l;
  22.     while (i < n1 && j < n2)
  23.     {
  24.         if (L[i] <= R[j])
  25.         {
  26.             arr[k] = L[i];
  27.             i++;
  28.         }
  29.         else
  30.         {
  31.             arr[k] = R[j];
  32.             j++;
  33.         }
  34.         k++;
  35.     }
  36.  
  37.     while (i < n1)
  38.     {
  39.         arr[k] = L[i];
  40.         i++;
  41.         k++;
  42.     }
  43.  
  44.     while (j < n2)
  45.     {
  46.         arr[k] = R[j];
  47.         j++;
  48.         k++;
  49.     }
  50. }
  51.  
  52.  
  53.  
  54.  
  55. void mergeSort(int arr[], int l, int r)
  56. {
  57.     if (l < r)
  58.     {
  59.  
  60.         int m = l+(r-l)/2;
  61.  
  62.  
  63.         mergeSort(arr, l, m);
  64.         mergeSort(arr, m+1, r);
  65.  
  66.         merge(arr, l, m, r);
  67.     }
  68. }
  69.  
  70.  
  71.  
  72.  
  73. int main()
  74. {
  75.     int arr[10001],tmp,arr_size=0;
  76.  
  77.     while(scanf("%d", &tmp) == 1)
  78.     {
  79.         arr[arr_size++] = tmp;
  80.         mergeSort(arr, 0, arr_size - 1);
  81.  
  82.         if((arr_size-1)%2==0)
  83.             printf("%d\n",arr[(arr_size-1)/2]);
  84.  
  85.         else
  86.         {
  87.             tmp=(arr[(arr_size-1)/2]+arr[1+((arr_size-1)/2)])/2;
  88. printf("%d\n",tmp);
  89.         }
  90.     }
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement