Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. #include<iostream>
  2. #include<cmath>
  3. #include<vector>
  4. #include<string>
  5. using namespace std;
  6.  
  7. void heapify(int i, vector<string> &str_heap, vector<int> &heap, int n){
  8.     int leftChild;
  9.     int rightChild;
  10.     int largestChild;
  11.  
  12.     while(i * 2 < n){
  13.         leftChild = 2 * i + 1;
  14.         rightChild = 2 * i + 2;
  15.         largestChild = i;
  16.  
  17.         if ((leftChild < n) && (str_heap[heap[leftChild]] > str_heap[heap[largestChild]])){
  18.             largestChild = leftChild;
  19.         }
  20.         if ((rightChild < n) && (str_heap[heap[rightChild]] > str_heap[heap[largestChild]])){
  21.             largestChild = rightChild;
  22.         }
  23.         if (largestChild == i){
  24.             break;
  25.         }
  26.  
  27.         int temp = heap[i];
  28.         string str_temp = str_heap[heap[i]];
  29.         str_heap[heap[i]] = str_heap[heap[largestChild]];
  30.         heap[i] = heap[largestChild];
  31.         str_heap[heap[largestChild]] = str_temp;
  32.         heap[largestChild] = temp;
  33.         i = largestChild;
  34.     }
  35. }
  36.  
  37. int main() {
  38.     ios_base::sync_with_stdio(false);
  39.     cin.tie(nullptr);
  40.  
  41.     int n;
  42.     cin >> n;
  43.     vector<string> str_heap(n);
  44.     for(int i = 0; i < n; i++){
  45.         cin >> str_heap[i];
  46.     }
  47.     vector<int> heap(n);
  48.     for(int i = 0; i < n; i++){
  49.         heap[i] = i;
  50.     }
  51.  
  52.     for(int i = n - 1; i >= 0; i--){
  53.         heapify(i, str_heap, heap, n);
  54.     }
  55.  
  56.     for(int i = 0; i < n; i++){
  57.         cout << heap[i] + 1 << endl;
  58.     }
  59.  
  60.     for(int i = 0; i < n; i++){
  61.         cout << str_heap[i] << endl;
  62.     }
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement