Advertisement
believe_me

Untitled

Nov 8th, 2021
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. void nullmatrix(int** matrix, int n) {
  5.     int counter = n / 2 + 1;
  6.     for (int i = 0; i < counter; i++) {
  7.         matrix[0][i] = 0;
  8.         matrix[1][i] = 0;
  9.     }
  10. }
  11.  
  12. int findnull(int** matrix, int n, int condition) {
  13.     for (int i = 0; i < n; i++) {
  14.         switch (condition) {
  15.         case 1:
  16.             if (matrix[0][i] == 0)
  17.                 return i;
  18.             break;
  19.         case 2:
  20.             if (matrix[1][i] == 0)
  21.                 return i;
  22.             break;
  23.         }
  24.     }
  25. }
  26.  
  27. int findmax(int size1, int size2) {
  28.     if (size1 > size2)
  29.         return size1;
  30.     else
  31.         return size2;
  32. }
  33.  
  34. int findnumberofcolumns(int** matrix, int n) {
  35.     for (int i = 0; i < n; i++)
  36.         if (matrix[0][i] == 0)
  37.             return i;
  38. }
  39.  
  40. void findrow(int* start, int* sort, int n, int* index, int* length) {
  41.     int i = *index;
  42.     int k = 0;
  43.     int* sort = new int[n];
  44.     do {
  45.         sort[k] = start[i];
  46.         i++;
  47.         k++;
  48.     } while (start[i] < start[i + 1]);
  49.     *length = i - *index + 1;
  50.     //*index += *length;
  51. }
  52.  
  53. void fillsort1(int* f1, int n, int length, int* index, int* sort, int** matrix) {
  54.     //*index += length;
  55.     for (int i = *index; i < *index + length; i++)
  56.         f1[i] = sort[i - *index];
  57.     int posnum = findnull(matrix, n, 1);
  58.     matrix[0][posnum] = length;
  59.     *index += length;
  60. }
  61.  
  62. void fillsort2(int* f2, int n, int length, int index, int* sort, int** matrix) {
  63.     for (int i = index; i < index + length; i++)
  64.         f2[i] = sort[i - index];
  65.     int posnum = findnull(matrix, n, 2);
  66.     matrix[1][posnum] = length;
  67. }
  68.  
  69. void fillingfs(int n, int* start, int* f1, int* f2, int** matrix) {
  70.     nullmatrix(matrix, n);
  71.     int index = 0;
  72.     int length = 0;
  73.     int condition = 0;
  74.     int* sort;
  75.     for (int i = 0; i < n; i += length) {
  76.         findrow(start, sort, n, &index, &length);
  77.         if (condition % 2 == 0)
  78.             fillsort1(f1, n, length, &index, sort, matrix);
  79.         else
  80.             fillsort2(f2, n, length, index, sort, matrix);
  81.         condition++;
  82.     }
  83. }
  84.  
  85. int calculatek(int** matrix, int i, int condition) {
  86.     int sum = 0;
  87.     for (int counter = 0; counter < i; counter++)
  88.     {
  89.         switch (condition) {
  90.         case 1:
  91.             sum += matrix[0][counter];
  92.             break;
  93.         case 2:
  94.             sum += matrix[1][counter];
  95.             break;
  96.         }
  97.     }
  98.     return sum;
  99. }
  100.  
  101. int* sortedf(int* f1, int* f2, int** matrix, int n, int* index) {
  102.     //int k1 = 0;
  103.     //int k2 = 0;
  104.     int* f = new int[n];
  105.     int inc;
  106.     int counter = findnumberofcolumns(matrix, n);
  107.     for (int i = 0; i < counter; i++) {
  108.         int size1 = matrix[0][i];
  109.         int size2 = matrix[1][i];
  110.         findmax(size1, size2);
  111.         /*for (int j = *index; j < *index + size1 + size2; j++) { //    1   6   7   8            
  112.                                                                        [0] [1] [2] [3] [4] [5] [6] [7]
  113.             if ((f1[j] < f2[j + size1]) && (j <= *index + size1))  //                   2   3   4   9  
  114.                 f[j] = f1[j];                                                                      
  115.             else {
  116.                 z = j;
  117.                 f[j] = f2[j + size1];
  118.                 f[j + size1] = f1[j];
  119.             }
  120.             if (j > *index + size1)
  121.                 f[j] = f2[j];              
  122.         }*/  
  123.         int j = *index;
  124.         int* buf = new int[n];
  125.         int j1 = j;
  126.         int j2 = j;
  127.         int z = j;
  128.         do {
  129.  
  130.             if (f1[j] < f2[j + size1])
  131.             {
  132.                 f[z] = f1[j];
  133.                 j1+-+;
  134.             }
  135.             else {
  136.                 f[z] = f2[j + size1];
  137.                 j2++;
  138.             }
  139.             z++;
  140.         } while (j < *index + size1);
  141.     }
  142.  
  143. }
  144.  
  145.  
  146. int main() {
  147.     setlocale(LC_ALL, "Russian");
  148.     int n;
  149.     std::cin >> n;
  150.     int* result = new int[n];
  151.     int* start = new int[n];
  152.     for (int i = 0; i < n; i++)
  153.         std::cin >> start[i];
  154.     int* f1 = new int[n];
  155.     int* f2 = new int[n];
  156.     int* sort = new int[n];
  157.     int length;
  158.  
  159.  
  160.     return 0;
  161. }
  162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement