Advertisement
Derga

Untitled

Oct 15th, 2023 (edited)
729
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.24 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. /*
  8. bool operator < (const RatingIndex& lhs, const RatingIndex& rhs) {
  9.     if (lhs.rating != rhs.rating) {
  10.         return lhs.rating < rhs.rating;
  11.     }
  12.     return lhs.index > rhs.index;
  13. }
  14.  
  15. bool operator > (const RatingIndex& lhs, const RatingIndex& rhs) {
  16.     if (lhs.rating != rhs.rating) {
  17.         return lhs.rating > rhs.rating;
  18.     }
  19.     return lhs.index < rhs.index;
  20. }
  21.  
  22. void quicksort(vector<RatingIndex>& arr, int low, int high) {
  23.     if (low > high) {
  24.         return;
  25.     }
  26.     int pivotindex = low + (high - low) / 2; int i = low; int j = high; RatingIndex z;
  27.     RatingIndex pivotelement = arr[pivotindex];
  28.     while (i <= j) {
  29.         while (arr[i] < pivotelement) {
  30.             i++;
  31.         }
  32.         while (arr[j] > pivotelement) {
  33.             j--;
  34.         }
  35.         if (i <= j) {
  36.             z = arr[i];
  37.             arr[i] = arr[j];
  38.             arr[j] = z;
  39.             i++;
  40.             j--;
  41.         }
  42.     }
  43.     quicksort(arr, low, j);
  44.     quicksort(arr, i, high);
  45. }
  46. */
  47.  
  48. struct RatingIndex {
  49.     int64_t rating;
  50.     int64_t index;
  51. };
  52.  
  53. int main() {
  54.     int critics_count, films_count, top_size;
  55.     cin >> critics_count >> films_count >> top_size;
  56.  
  57.     vector<int64_t> authorities(critics_count);
  58.     for (int64_t& authority : authorities) {
  59.         cin >> authority;
  60.     }
  61.  
  62.     vector<RatingIndex> ratings_indexies(films_count);
  63.     for (int i = 0; i < films_count; i++) {
  64.         ratings_indexies[i].index = i;
  65.         ratings_indexies[i].rating = 0;
  66.  
  67.         for (int64_t authority : authorities) {
  68.             int64_t score;
  69.             cin >> score;
  70.             ratings_indexies[i].rating += authority * score;
  71.             ratings_indexies[i].rating %= 1000000007;
  72.         }
  73.     }
  74.    
  75.     sort(begin(ratings_indexies), end(ratings_indexies), [](const auto& lhs, const auto& rhs) {
  76.         if (lhs.rating != rhs.rating) {
  77.             return lhs.rating > rhs.rating;
  78.         }
  79.         return lhs.index < rhs.index;
  80.     });
  81.  
  82.     for (int i = 0; i < top_size; i++) {
  83.         cout << ratings_indexies[i].index + 1 << ' ';
  84.     }
  85. }
  86.  
  87. /*
  88. 6 4 2
  89. 5 1 2 0 2 4
  90. 1 0 9 2 9 5
  91. 5 5 2 0 5 2
  92. 2 7 2 2 5 2
  93. 5 2 4 2 2 5
  94. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement