SP14949 HELPER - HELPER

题目描述

令人难以置信的是,OhWord 大学的考试周已经开始。而更出人意料的是,由于学期内表现优秀,Valera 提前获得了所有考试的试题。如今有空闲时间,他计划通过为同学提供解题服务来赚取一些钱。他列出了自己擅长的科目清单,并与 $n$ 位同学交流后,得知他们的考试科目、考试时间以及愿意支付的金额。 掌握了这些信息后,Valera 希望制定一个时间表,以此在考试期间帮助同学显著提升成绩。显然,Valera 不能全天候工作,因此他安排了一个合理的日程计划,其中包括睡觉、早餐、午餐、晚餐的时间段,剩余时间则用于工作。 Valera 只能为那些他的科目列表内的学生提供帮助。碰巧的是,所有学生遇到的问题各自不同但性质相同,Valera 只需在 $t_i$ 分钟内解决科目列表中第 $i$ 门科目中的任何问题。 此外,一旦 Valera 开始解决某个问题,他除非是去睡觉或用餐,否则不能半途而废开始新的问题。问题解决后,Valera 能立即通过互联网发送结果给该学生。 如果这个学生的考试还未开始,他可以利用这些答案通过考试,并根据承诺支付给 Valera。由于 Valera 时间有限,他请求你编写一个程序,帮助他找到一个解决问题的最佳顺序,从而帮助他最大化收益。

输入格式

第一行包含三个整数 $m, n, k$(1 ≤ $m, n$ ≤ 100, 1 ≤ $k$ ≤ 30),分别表示科目列表中的科目数量、Valera 的潜在雇主数量和考试周期的天数。 接下来的 $m$ 行,每行包含一个科目的名称 $list_i$($list_i$ 是一个最多包含 32 个字符的非空小写字母字符串)。保证没有两个科目名称相同。 第 $(m + 2)$ 行包含 $m$ 个整数 $t_i$(1 ≤ $t_i$ ≤ 1000),表示 Valera 解决第 $i$ 个科目问题所需要的时间,以分钟计算。 接下来是四行,分别表示睡觉、早餐、午餐和晚餐的时间段。 每行的格式为 H1:M1-H2:M2,其中 00 ≤ H1, H2 ≤ 23,00 ≤ M1, M2 ≤ 59。时间 H1:M1 是某项活动的开始分钟,而 H2:M2 是该活动的结束分钟。各个时间段之间没有重叠。保证 Valera 在午夜前就寝,早于早餐时间起床,早餐结束早于午餐时间,午餐结束早于晚餐时间,晚上在午夜前完成晚餐。每项活动的持续时间少于一天但不少于一分钟。开始和结束时间都在同一天内。然而,Valera 可能没有足够的时间解题。 接下来的 $n$ 行描述每个学生的信息:考试科目 $s_i$($s_i$ 是一个最多 32 个字符的非空小写字母字符串)、考试日期 $d_i$(1 ≤ $d_i$ ≤ $k$)、考试时间 $time_i$ 以及该学生愿意支付给 Valera 的金额 $c_i$(0 ≤ $c_i$ ≤ 10^6,$c_i$ 为整数)。考试时间 $time_i$ 为 HH:MM 格式,其中 00 ≤ HH ≤ 23,00 ≤ MM ≤ 59。Valera 只有在该学生考试开始前完成问题才能获得报酬。

输出格式

第一行输出 Valera 可以获得的最大收益。第二行输出一个整数 $p$,表示 Valera 应该解决的问题数量。接下来的 $p$ 行按照时间顺序输出每个问题的解决顺序,格式为:需要帮助的学生的索引;Valera 开始解题的日期索引;Valera 开始解题的时间(工作的第一分钟);Valera 结束解题的日期索引;Valera 完成解题的时间(工作的最后一分钟)。为了更好地了解输出格式,请参考样例和提示。 **本翻译由 AI 自动生成**