某工厂正在进行生产调度,工厂的机器可以在接下来的 N 个小时内进行工作。
工厂有 M 个可用的生产时段,第 i 个时段从第 S_i 小时开始,到第 E_i 小时结束。在这个时段内,机器能够生产 C_i 个单位的产品。
由于机器每次工作后需要冷却一段时间,厂长规定,如果本次生产在第 E_i 小时结束,那么下一次的生产的开始时间 S_{i+1} 和本次生产时间的结束时间 E_i 的差值,要满足 S_{i+1} - E_i \ge T ,以保证机器有充分的时间散热,不会因为连续生产导致损坏。
你的任务是帮助工厂安排生产时段,使得在这 N 个小时内,工厂能够生产的产品总量最大。
你只需编程计算出,工厂在这 N 个小时内,最多可以生产多少个单位的产品。
第一行包含三个整数 N、M 和 T,分别表示总的生产时长、可用的生产时段数和机器的冷却时间。
接下来 M 行,每行包含三个整数 S_i、E_i 和 C_i,表示第 i 段生产时段的起始小时、结束小时以及在该时段内能够生产的产品数量。
输出一个整数,表示工厂在 N 个小时内能够生产的最大产品总量。
20 5 2 1 2 8 10 15 10 4 6 30 7 10 35 16 20 15
58
90 10 5 55 80 5 74 84 26 42 57 29 40 64 8 48 57 5 43 58 27 62 81 30 1 59 46 17 38 28 80 83 29
84
200 20 15 56 152 93 118 196 35 190 193 96 184 189 54 73 193 66 155 165 50 92 96 91 45 153 33 158 165 9 166 186 22 157 164 66 181 196 33 173 194 83 135 199 77 113 147 37 54 100 54 105 165 97 140 146 11 124 158 70 37 163 54
257
共有 20 个小时可以生产,有 5 个可用的生产时段。
先选择第 1 个时段 [1,2],生产 8 个产品。
再选择第 4 个时段 [7,10],生产 35 个产品。
再选择第 5 个时段 [16,20],生产 15 个产品。
共计生产 58 个产品。
对于 40\% 的测试数据,满足 1 \le N \le 1000,1 \le M \le 100。
对于 100\% 的测试数据, 满足 1 \leq N \leq 10^6,1 \leq M \leq 10^3,1 \leq S_i < E_i \leq N,1 \leq C_i \leq 10^6。