Advertisement
Infiniti_Inter

ебитесь конем такие задачи

May 8th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7.  
  8.  
  9. int* Get_Line(int** a, int k, int n) {
  10.     int SIZE, i, j, ptr = 0;
  11.     if (k < n) {
  12.         SIZE = k + 1;
  13.         i = k;
  14.         j = 0;
  15.     }
  16.     else {
  17.         SIZE = 2 * n - 1 - k;
  18.         i = n - 1;
  19.         j = k - n + 1;
  20.     }
  21.     int* res = new int[SIZE];
  22.    
  23.  
  24.     while (i >= 0 && j < n)
  25.         res[ptr++] = a[i--][j++];
  26.    
  27.     return res;
  28. }
  29.  
  30. int** init(int n)
  31. {
  32.     int** a = new int*[n];
  33.     for(int i = 0; i < n; ++i)
  34.         a[i] = new int[n];
  35.     for (int i = 0; i < n; ++i)
  36.         for (int j = 0; j < n; ++j)
  37.         cin >> a[i][j];
  38.     return a;
  39. }
  40.  
  41.  
  42. void sort(int* a, int n)
  43. {
  44.     for (int i = 0; i < n; ++i)
  45.     {
  46.         int min = a[i];
  47.         int idx = i;
  48.         for (int j = i; j < n; ++j)
  49.             if (a[j] < min)
  50.             {
  51.                 min = a[j];
  52.                 idx = j;
  53.             }
  54.         swap(a[i], a[idx]);
  55.     }
  56. }
  57.  
  58. void Replace(int** a, const int* arr, int k, int n) {
  59.     int i, j, ptr = 0;
  60.     if (k < n) {
  61.         i = k;
  62.         j = 0;
  63.     }
  64.     else {
  65.         i = n - 1;
  66.         j = k - n + 1;
  67.     }
  68.     while (i >= 0 && j < n)
  69.         a[i--][j++] = arr[ptr++];
  70. }
  71.  
  72. int main()
  73. {
  74.     int n;
  75.     cin >> n;
  76.     int** a = init(n);
  77.  
  78.     for (int k = 0; k < 2*n - 1; ++k)
  79.     {
  80.         int* temp = Get_Line(a, k, n);
  81.         int SIZE;
  82.         if (k < n)
  83.             SIZE = k + 1;
  84.         else
  85.             SIZE = 2 * n - k - 1;
  86.         sort(temp, SIZE);
  87.         Replace(a, temp, k, n);
  88.     }
  89.  
  90.  
  91.     cout << endl;
  92.     for (int i = 0; i < n; ++i)
  93.     {
  94.         for (int j = 0; j < n; ++j)
  95.             cout << a[i][j] << ' ';
  96.         cout << '\n';
  97.     }
  98.     system("pause");
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement