Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. struct vg
  4. {
  5. long long s1, s2, v, t1, t2;
  6. };
  7. bool cmp(vg a, vg b)
  8. {
  9. return a.t1 < b.t1;
  10. }
  11. int main()
  12. {
  13. //freopen("input.txt", "r", stdin);
  14. long long n, m;
  15. cin >> n >> m;
  16. vector<vg> v(m);
  17. vector<long long> N(n + 1 + 228 + 1337 + 1488);
  18. for(long long i = 0; i < m; ++i)
  19. {
  20. cin >> v[i].s1 >> v[i].s2 >> v[i].v;
  21. long long t1_h, t2_h, t1_m, t2_m;
  22. char kek;
  23. cin >> t1_h >> kek >> t1_m >> t2_h >> kek >> t2_m;
  24. v[i].t1 = (t1_h) * 60 + t1_m;
  25. v[i].t2 = (t2_h) * 60 + t2_m;
  26. if(v[i].t1 > v[i].t2)
  27. {
  28. v[i].t2 += 24 * 60;
  29. }
  30. }
  31. sort(v.begin(), v.end(), cmp);
  32. auto p = v;
  33. for(auto i : p)
  34. {
  35. i.t1 += 24 * 60;
  36. i.t2 += 24 * 60;
  37. v.push_back(i);
  38. }
  39. sort(v.begin(), v.end(), cmp);
  40. multiset<pair<long long, pair<long long, long long>>> have_to;
  41. long long now = 0;
  42. int cnt = 0;
  43. long long mx;
  44. for(auto i : v) {
  45. if (cnt < n)
  46. {
  47. mx = now;
  48. }
  49. while(!have_to.empty() && i.t1 >= have_to.begin()->first)
  50. {
  51. N[have_to.begin()->second.first] += have_to.begin()->second.second;
  52. have_to.erase(have_to.begin());
  53. }
  54. if(N[i.s1] < i.v)
  55. {
  56. now += i.v - N[i.s1];
  57. N[i.s1] = i.v;
  58. }
  59. N[i.s1] -= i.v;
  60. have_to.insert({i.t2, {i.s2, i.v}});
  61. }
  62. cout << min(mx, now);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement