Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cmath>
- #include<vector>
- #include<string>
- using namespace std;
- void heapify(int i, vector<string> &str_heap, vector<int> &heap, int n){
- int leftChild;
- int rightChild;
- int largestChild;
- while(i * 2 < n){
- leftChild = 2 * i + 1;
- rightChild = 2 * i + 2;
- largestChild = i;
- if ((leftChild < n) && (str_heap[heap[leftChild]] > str_heap[heap[largestChild]])){
- largestChild = leftChild;
- }
- if ((rightChild < n) && (str_heap[heap[rightChild]] > str_heap[heap[largestChild]])){
- largestChild = rightChild;
- }
- if (largestChild == i){
- break;
- }
- int temp = heap[i];
- string str_temp = str_heap[heap[i]];
- str_heap[heap[i]] = str_heap[heap[largestChild]];
- heap[i] = heap[largestChild];
- str_heap[heap[largestChild]] = str_temp;
- heap[largestChild] = temp;
- i = largestChild;
- }
- }
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- int n;
- cin >> n;
- vector<string> str_heap(n);
- for(int i = 0; i < n; i++){
- cin >> str_heap[i];
- }
- vector<int> heap(n);
- for(int i = 0; i < n; i++){
- heap[i] = i;
- }
- for(int i = n - 1; i >= 0; i--){
- heapify(i, str_heap, heap, n);
- }
- for(int i = 0; i < n; i++){
- cout << heap[i] + 1 << endl;
- }
- for(int i = 0; i < n; i++){
- cout << str_heap[i] << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement