Advertisement
desislava_shunina

zad_daa

Mar 28th, 2024
505
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. #include <vector>
  4. #include <algorithm>
  5. #include <queue>
  6.  
  7. int main()
  8. {
  9.     int n, m;
  10.     cin >> n >> m;
  11.     vector<pair<int, int>> v;
  12.     for (int i = 0; i < m; i++)
  13.     {
  14.         int s, l;
  15.         cin >> s >> l;
  16.         v.push_back(pair<int, int>(s, l));
  17.     }
  18.  
  19.     sort(v.begin(), v.end(), [](const pair<int, int>& p1, const pair<int, int>& p2) {
  20.         if (p1.first == p2.first)
  21.             return p1.second > p2.second;
  22.         return p1.first < p2.first;
  23.         });
  24.  
  25.     priority_queue<int, vector<int>, std::greater<int>> studios;
  26.     for (int i = 1; i <= n; i++)
  27.         studios.push(i);
  28.  
  29.     priority_queue<pair<pair<int, int>, int>, vector<pair<pair<int, int>, int>>, std::greater<pair<pair<int, int>, int>>> pq;
  30.     for (int i = 0; i < m; i++)
  31.     {
  32.         int currArr = v[i].first;
  33.  
  34.         while (!pq.empty() && pq.top().first.first <= currArr)
  35.         {
  36.             auto p = pq.top();
  37.             studios.push(p.second);
  38.             pq.pop();
  39.         }
  40.         if (studios.empty() && !pq.empty())
  41.         {
  42.             auto curr = pq.top();
  43.             pq.pop();
  44.             pq.push({ {curr.first.first + v[i].second, curr.first.second}, curr.first.first });
  45.         }
  46.         else {
  47.             pq.push({ {v[i].second + v[i].first, studios.top()}, v[i].first });
  48.             studios.pop();
  49.         }
  50.     }
  51.     pair<pair<int, int>, int> p;
  52.     while (!pq.empty())
  53.     {
  54.         p = pq.top();
  55.         pq.pop();
  56.     }
  57.  
  58.     cout << p.first.first << " " << p.first.second;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement