2696 问题 D: 蓝桥杯2022年第十三届决赛真题-费用报销

时间限制: 1s 内存限制: 256MB 提交: 3782 解决: 654
题目描述

小明在出差结束后返回了公司所在的城市,在填写差旅报销申请时,粗心的小明发现自己弄丢了出差过程中的票据。

为了弥补小明的损失,公司同意小明用别的票据进行报销,但是公司财务要求小明提交的票据中任意两张的日期差不小于 K 天,且总金额不得超过实际差旅费用 M。

比如财务要求 K = 7 时,若小明提交了一张 1 月 8 日的票据,小明就不能提交 1 月 2 日至 1 月 14 日之间的其他票据,1 月 1 日及之前和 1 月 15 日及之后的票据则可以提交。

公司的同事们一起给小明凑了 N 张票据,小明现在想要请你帮他整理一下,从中选取出符合财务要求的票据,并使总金额尽可能接近 M。

需要注意,由于这些票据都是同一年的,因此 12 月底的票据不会影响到 1 月初票据的提交。这一年不是闰年。 

输入

第 1 行:3 个整数,N, M, K

第 2 . . . N + 1 行:每行 3 个整数 mi , di , vi,第 i + 1 行表示第 i 张票据时间的月份 mi 和日期 di,vi 表示该票据的面值 

输出
第 1 行:1 个整数,表示小明能够凑出的最大报销金额
样例输入
4 16 3
1 1 1
1 3 2
1 4 4
1 6 8
样例输出
10
提示

选择 1 月 3 日和 1 月 6 日的票据

对于 100% 的评测用例,1 ≤ N ≤ 1000, 1 ≤ M ≤ 5000, 1 ≤ K ≤ 50, 1 ≤ mi ≤ 12, 1 ≤ di ≤ 31, 1 ≤ vi ≤ 400

日期保证合法。

比赛公告

1. 对于编程题目,要求选手给出的解答完全符合 GNU C/C++ 标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的 API。

2. 代码中允许使用 STL 类库。

3. main 函数结束必须返回 0。

4. 所有依赖的函数必须明确地在源文件中 #include

5. 提交时,注意选择使用C或C++语言。