Advertisement
simushin_pavel

Untitled

Nov 13th, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <utility>
  3. #include <vector>
  4. #include <set>
  5. #include <algorithm>
  6. #include <iterator>
  7. const long long INF=1E9+7;
  8. using namespace std;
  9. int main(){
  10.     ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  11.     long long id_serv, id, beg, idserv, now, i, n, m, ans=INF; cin >> n >> m;
  12.     vector<pair<pair<long long, long long>, pair<long long, long long>>> v(n);
  13.     vector<pair<long long, long long>> cash;
  14.     for(i=0; i<n; ++i){
  15.         cin >> v[i].first.second >> v[i].second.first >> v[i].second.second;
  16.         v[i].first.first=i;
  17.     }
  18.     while(true){
  19.         cash=vector<pair<long long, long long>>();
  20.         now=0;
  21.         for(auto x:v){
  22.             cash.push_back({x.first.first, now});
  23.             now+=x.first.second;
  24.         }
  25.         set<pair<long long, long long>> servs;
  26.         vector<pair<long long, long long>> ready;
  27.         for(i=0; i<m; ++i) servs.insert({0, i});
  28.         for(auto x:cash){
  29.             id=x.first;
  30.             beg=max((*servs.begin()).first, x.second);
  31.             id_serv=(*servs.begin()).second;
  32.             servs.erase(*servs.begin());
  33.             servs.insert({beg+v[id].second.first, id_serv});
  34.             ready.push_back({beg+v[id].second.first, id});
  35.         }
  36.         sort(ready.begin(), ready.end());
  37.         for(auto x:ready) now=max(now, x.first)+v[x.second].second.second;
  38.         ans=min(ans, now);
  39.         if(!next_permutation(v.begin(), v.end())) break;
  40.     }
  41.     cout << ans;
  42.     return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement