题目描述
退货大师面对 个任务,输入顺序即到来顺序,编号 到 ;任务 的截止时刻为 ,报酬为 ,加工时长均为 。大师手里有 点操作额度,每次退货消耗 点。
先把全部任务按(截止时刻,到来编号)双关键字升序排列,然后依次逐个执行固定流程:先把当前任务加入保留集合;若保留集合的大小超过当前任务的截止时刻 ,立即退货一次——退掉集合中报酬最低的任务;若报酬最低的有多个,退其中到来编号最小的一个。
设整个流程共退货 次。若 ,输出 ;否则依次输出三行:最终保留任务的总报酬、、全部被退任务的到来编号之和。(可以证明, 时第一行的总报酬就是保留报酬的最大值。)
输入格式
第一行两个整数 。
接下来 行,第 行两个整数 。
输出格式
见题目描述:输出一行 ,或共三行、每行一个整数。
样例 1
样例
输入
4 4 2 5 2 5 2 9 4 1
输出
15 1 1
排序后依次处理:前两个任务入集合后大小 ;第三个入集合后大小 ,报酬最低的是前两个任务(同为 ),退到来编号最小的任务 ;第四个入集合后大小 。保留任务 ,总报酬 ,退货 次,被退编号之和 。
样例 2
输入
3 1 1 9 1 8 1 7
输出
-1
三个任务截止时刻都是 :处理第二个任务后退报酬 的任务 ,处理第三个任务后又退报酬 的任务 ,共退货 次,超过额度 。
数据范围
;;;。总报酬与编号之和可能超过 位整数范围。