fork download
  1. #include<bits/stdc++.h>
  2.  
  3. #define ll long long
  4. #define pp push_back
  5. #define endl '\n'
  6. #define all(x) x.begin(),x.end()
  7. #define ld long double
  8. #define PI acos(-1)
  9. #define ones(x) __builtin_popcountll(x)
  10. //#define int ll
  11.  
  12. using namespace std;
  13.  
  14. void Drakon() {
  15. ios_base::sync_with_stdio(false);
  16. cin.tie(nullptr);
  17. cout.tie(nullptr);
  18. #ifdef Clion
  19. freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
  20. #endif
  21. }
  22.  
  23. unsigned long long inf = 1e10;
  24. const double EPS = 1e-6;
  25. const int MOD = 1000000007, N = 1005, LOG = 25;
  26.  
  27. ll mul(const ll &a, const ll &b) {
  28. return (a % MOD + MOD) * (b % MOD + MOD) % MOD;
  29. }
  30.  
  31. ll add(const ll &a, const ll &b) {
  32. return (a + b + 2 * MOD) % MOD;
  33. }
  34.  
  35. ll pw(ll x, ll y) {
  36. ll ret = 1;
  37. while (y > 0) {
  38. if (y % 2 == 0) {
  39. x = mul(x, x);
  40. y = y / 2;
  41. } else {
  42. ret = mul(ret, x);
  43. y = y - 1;
  44. }
  45. }
  46. return ret;
  47. }
  48.  
  49. struct Task {
  50. int s, e, d, h;
  51. };
  52.  
  53. vector<Task> tasks;
  54. int dp[N][60*60 + 5], n;
  55.  
  56. int slv(int i, int cur) {
  57. if(i == n) return 0;
  58. int &ret = dp[i][cur];
  59. if(~ret)
  60. return ret;
  61. ret = slv(i + 1, cur);
  62. int tmp = max(tasks[i].s, cur);
  63. if(tmp + tasks[i].d <= tasks[i].e) {
  64. ret = max(ret, tasks[i].h + slv(i + 1, tmp + tasks[i].d));
  65. }
  66. return ret;
  67.  
  68. }
  69.  
  70. int parse() {
  71. int h, m;
  72. char c;
  73. cin >> h >> c >> m;
  74. return h * 60 + m;
  75. }
  76.  
  77. void solve() {
  78. cin >> n;
  79. tasks.resize(n);
  80. for (int i = 0; i < n; ++i) {
  81. tasks[i].s = parse();
  82. tasks[i].e = parse();
  83. cin >> tasks[i].d >> tasks[i].h;
  84. }
  85. int w = parse();
  86. sort(all(tasks), [&](Task &a, Task &b) {
  87. return a.e - a.d < b.e - b.d;
  88. });
  89. memset(dp, -1, sizeof dp);
  90. cout << slv(0, w);
  91. }
  92.  
  93. signed main() {
  94. Drakon();
  95. int t = 1;
  96. //cin >> t;
  97. while (t--) {
  98. solve();
  99. }
  100. }
Success #stdin #stdout 0.01s 17712KB
stdin
Standard input is empty
stdout
Standard output is empty