Advertisement
Guest User

Untitled

a guest
Oct 4th, 2015
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>  
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. const int N = 1e5;
  7. int inv = 0, A[N];
  8. void merge (int *A, int low, int high, int mid) {
  9.     int C[N], i, j, k;
  10.     i = low; j = mid + 1; k = low;
  11.     while (j <= high && i <= mid + 1) {
  12.         if (A[i] < A[j]) {
  13.             inv += 1;
  14.             C[k] = A[i];
  15.             i += 1; k += 1;
  16.         }
  17.         else {
  18.             C[k] = A[j];
  19.             j += 1;
  20.             k += 1;
  21.         }
  22.     }
  23.     while (i <= mid) {
  24.         C[k] = A[i];
  25.         k += 1; i += 1;
  26.     }
  27.     while (j <= high) {
  28.         C[k] = A[j];
  29.         k += 1; j += 1;
  30.     }
  31.     for (int i = low; i < k; ++i){
  32.         A[i] = C[i];
  33.     }
  34.  
  35. }
  36. void mergesort (int *A, int low, int high) {
  37.     int mid;
  38.     if (low < high) {
  39.         mid = (low+high)/2;
  40.         mergesort(A, low, mid);
  41.         mergesort(A, mid + 1, high);
  42.         merge (A, low, high, mid);
  43.     }
  44. }
  45.  
  46.  
  47. int main() {
  48.     int n, a;
  49.     // std::vector<int> A;
  50.     scanf("%d", &n);
  51.     for (int i = 0; i < n; ++i) {
  52.         scanf("%d", &A[i]);
  53.         // A.push_back(a);
  54.     }
  55.     mergesort(A, 0, n - 1);
  56.  
  57.     for (int i = 0; i < n; ++i){
  58.         printf("%d ", A[i] );
  59.     }
  60.     // printf("%d\n",inv );
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement