allia

критерии

Oct 18th, 2020 (edited)
543
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. void second_sort (long long **arr, int n)
  7. {
  8.   for (int i=1; i<n; i++)
  9.    for (int j=0; j<n-i; j++)
  10.      if (arr[j][2] > arr[j+1][2] && arr[j][1] == arr[j+1][1])
  11.         {
  12.           swap(arr[j+1][0], arr[j][0]);
  13.           swap(arr[j+1][2], arr[j][2]);
  14.         }
  15. }
  16.  
  17. void first_sort (long long **arr, int n)
  18. {
  19.   for (int i=1; i<n; i++)
  20.    for (int j=0; j<n-i; j++)
  21.      if (arr[j][1] < arr[j+1][1])
  22.         {
  23.           swap(arr[j+1][1], arr[j][1]);
  24.           swap(arr[j+1][0], arr[j][0]);
  25.           swap(arr[j+1][2], arr[j][2]);
  26.         }
  27.   second_sort (arr, n);
  28. }
  29.  
  30. void third_sort (long long **arr, int index, int first )
  31. {
  32.   for (int i=first+1; i<index+first-1; i++)
  33.    for (int j=first; j<index+first-i-1; j++)
  34.      if (arr[j][0] < arr[j+1][0])
  35.           swap(arr[j+1][0], arr[j][0]);
  36.  
  37. }
  38.  
  39. int main ()
  40. {
  41.   int n;
  42.   long long **arr;
  43.   cin >> n;
  44.  
  45.   arr = new long long* [n];
  46.  
  47.   for (int i=0; i<n; i++)
  48.     arr[i] = new long long[3];
  49.  
  50.   for (int i=0; i<n; i++)
  51.   {
  52.    arr[i][0] = i+1;
  53.    for (int j=1; j<3; j++)
  54.      cin >> arr[i][j];
  55.   }
  56.  
  57.   first_sort (arr, n);
  58.  
  59.  
  60.   int index=0, shet=0, i=n-1;
  61.  
  62.   while(i != 0)
  63.     {
  64.       while (arr[i][1] == arr[i-1][1] && arr[i][2] == arr[i-1][2])
  65.       {
  66.         index++;
  67.         i--;
  68.       }
  69.       shet = i+1;
  70.       if (index != 0)
  71.        {
  72.          third_sort (arr, index, shet);
  73.          index = 0;
  74.        }
  75.        i--;
  76.    }
  77.  
  78.   for (int i=0; i<n; i++)
  79.     cout << arr[i][0] << " ";
  80.      
  81. }
RAW Paste Data