#S0022. 驻点排班(roster)
驻点排班(roster)
题目描述
一场活动持续 天,服务站从 开始编号。第 天,只有编号为 的服务站开放;若 ,则当天没有服务站开放。每个开放的服务站每天必须恰好安排一个小组值班,未开放的服务站不能安排值班。
共有 个候选小组,你可以从中选用若干个。第 个小组一旦被选用,就必须在同一个服务站连续值班恰好 天,产生的总收益为 。每个小组最多使用一次,值班日期必须全部位于活动的 天内。
在满足所有值班要求的前提下,求最大总收益。若不存在可行安排,输出 ;若所有服务站始终关闭,总收益也为 。
输入格式
第一行包含两个整数 ,表示活动天数和候选小组数。
第二行包含 个整数 ,描述每天开放的服务站。
接下来 行,第 行包含两个整数 ,表示第 个小组的连续值班天数和总收益。
输出格式
输出一行一个整数,表示最大总收益;不存在可行安排时,输出 。
样例输入 1
3 4
2 1 2
3 4
1 2
1 5
1 7
样例输出 1
16
样例 1 解释
让第 个小组在 号站连续值班 天;第 、 个小组分别在第 、 天到 号站值班。总收益为 ,这是最大值。
样例输入 2
2 1
1 1
1 8
样例输出 2
0
样例 2 解释
唯一的小组只能值班 天,无法覆盖 号站连续开放的两天,因此不存在可行安排,输出 。
数据范围与子任务
对于所有测试数据,保证,,,,。
每个子任务内的正式测试全部通过,才获得该子任务的分数。
| 子任务编号 | 分值 | 额外限制 |
|---|---|---|
| 1 | 20 | |
| 2 | ||
| 3 | , | |
| 4 | 40 | 无额外限制 |