Advertisement
Guest User

Untitled

a guest
Sep 18th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <map>
  5.  
  6. using namespace std;
  7.  
  8. void heapify(vector<pair<string, int>> & mas, int pos, int n)
  9. {
  10.     while (2 * pos + 1 < n)
  11.     {
  12.         int j = 2 * pos + 1;
  13.         if ((j + 1 < n) && (mas[j + 1] > mas[j]))
  14.             j++;
  15.         if (mas[j] > mas[pos])
  16.         {
  17.             swap(mas[pos], mas[j]);
  18.             pos = j;
  19.         }
  20.         else
  21.             break; 
  22.     }
  23. }
  24.  
  25. int main()
  26. {
  27.     int n;
  28.     cin >> n;
  29.     vector<pair<string, int>> mas;
  30.     string a;
  31.     for (int i = 0; i < n; i++)
  32.     {
  33.         cin >> a;
  34.         mas.push_back(make_pair(a, i));
  35.     }
  36.     for (int i = n - 1; i >= 0; i--)
  37.         heapify(mas, i, n);
  38.     int *ans = new int[n];
  39.     for (int i = 0; i < mas.size(); i++)
  40.     {
  41.         ans[mas[i].second] = i + 1;
  42.     }
  43.     for (int i = 0; i < n; i++)
  44.     {
  45.         cout << ans[i] << endl;
  46.     }
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement